예제 #1
0
        public VirtualDirectory Directory(params string[] directoryParts)
        {
            if (!directoryParts.Any())
            {
                return(this);
            }

            string           directoryName = directoryParts[0];
            VirtualDirectory result        = Entries.OfType <VirtualDirectory>().FirstOrDefault(d => d.Name == directoryName);

            if (result == null)
            {
                result = contentResolver.Create <VirtualDirectory>(directoryName);
                AddEntry(result);
            }
            return(result.Directory(directoryParts.Skip(1).ToArray()));
        }
예제 #2
0
        public async Task CopyToAsync(VirtualDirectory destination)
        {
            if (destination == null)
            {
                throw new ArgumentNullException(nameof(destination));
            }

            foreach (VirtualFile file in Entries.OfType <VirtualFile>())
            {
                VirtualFile destinationFile = destination.File(file.Name);
                using (Stream destinationStream = destinationFile.OpenWrite())
                    using (Stream sourceStream = file.OpenRead())
                    {
                        await sourceStream.CopyToAsync(destinationStream).ConfigureAwait(false);
                    }
            }

            foreach (VirtualDirectory directory in Directories)
            {
                await directory.CopyToAsync(destination.Directory(directory.Name)).ConfigureAwait(false);
            }
        }