internal FileSystemArchiveDirectory(FileSystemArchive archive, FileSystemArchiveDirectory parent, DirectoryInfo directoryInfo) { this.Archive = archive; Parent = parent; this.directoryInfo = directoryInfo; Directories = new FileSystemArchiveDirectoryCollection(archive, this); Files = new FileSystemArchiveFileCollection(archive, this); }
public FileSystemArchiveFile(FileSystemArchive archive, FileSystemArchiveDirectory parent, FileInfo fileInfo) { Archive = archive; Parent = parent; FileInfo = fileInfo; Name = fileInfo.Name; FullName = fileInfo.FullName .Substring(archive.RootDirectoryInfo.FullName.Length + 1) .Replace('\\', '/'); Extension = fileInfo.Extension; }
static void CopyIntoRecursive(FileSystemArchiveDirectory from, IArchiveDirectory to, string rename) { foreach (var file in from.Files) { var destFile = to.Files.GetFile(file.Name); if (destFile is FileSystemArchiveFile fileSystemFile) { file.FileInfo.CopyTo(fileSystemFile.FileInfo.FullName, true); } else { using var openStream = file.OpenRead(); var dest = file.OpenWrite(); openStream.CopyTo(dest); } } foreach (var directory in from.Directories) { var destDirectory = to.Directories.GetDirectory(directory.Name); CopyIntoRecursive(directory, destDirectory, directory.Name); } }
public FileSystemArchiveFileCollection(FileSystemArchive archive, FileSystemArchiveDirectory owner) { this.archive = archive; this.owner = owner; }
public FileSystemArchive(DirectoryInfo rootDirectory) { RootDirectoryInfo = rootDirectory; RootDirectory = new FileSystemArchiveDirectory(this, null, rootDirectory); }