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);
        }
Example #2
0
        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);
                }
            }
Example #4
0
 public FileSystemArchiveFileCollection(FileSystemArchive archive, FileSystemArchiveDirectory owner)
 {
     this.archive = archive;
     this.owner   = owner;
 }
Example #5
0
 public FileSystemArchive(DirectoryInfo rootDirectory)
 {
     RootDirectoryInfo = rootDirectory;
     RootDirectory     = new FileSystemArchiveDirectory(this, null, rootDirectory);
 }