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())); }
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); } }