public FileSystemArchiveFile(FileSystemArchive archive, FileSystemArchiveDirectory parent, FileInfo fileInfo)
        {
            Archive  = archive;
            Parent   = parent;
            FileInfo = fileInfo;

            Name      = fileInfo.Name;
            FullName  = MakeFullName(parent, fileInfo.Name);
            Extension = fileInfo.Extension;
        }
        public FileSystemArchiveFileCollection(FileSystemArchive archive, FileSystemArchiveDirectory owner)
        {
            this.archive = archive;
            this.owner   = owner;

            internalList = new List <FileSystemArchiveFile>();
            foreach (var fileInfo in owner.directoryInfo
                     .EnumerateFiles("*", SearchOption.TopDirectoryOnly))
            {
                internalList.Add(new FileSystemArchiveFile(archive, owner, fileInfo));
            }
        }
        internal FileSystemArchiveDirectory(FileSystemArchive archive, FileSystemArchiveDirectory parent, DirectoryInfo directoryInfo)
        {
            Archive            = archive;
            Parent             = parent;
            this.directoryInfo = directoryInfo;

            if (parent != null)
            {
                Name     = directoryInfo.Name;
                FullName = MakeFullName(parent, directoryInfo.Name);
            }

            Directories = new FileSystemArchiveDirectoryCollection(archive, this);
            Files       = new FileSystemArchiveFileCollection(archive, this);
        }