Ejemplo n.º 1
0
            internal override IEnumerable <SevenZipEntry> GetEntries(Stream stream)
            {
                List <SevenZipArchiveEntry> entries = archive.Entries.ToList();

                stream.Position = 0;
                foreach (var dir in entries.Where(x => x.IsDirectory))
                {
                    yield return(dir);
                }
                foreach (var group in entries.Where(x => !x.IsDirectory).GroupBy(x => x.FilePart.Folder))
                {
                    currentFolder = group.Key;
                    if (group.Key == null)
                    {
                        currentStream = Stream.Null;
                    }
                    else
                    {
                        currentStream = archive.database.GetFolderStream(stream, currentFolder, null);
                    }
                    foreach (var entry in group)
                    {
                        currentItem = entry.FilePart.Header;
                        yield return(entry);
                    }
                }
            }
Ejemplo n.º 2
0
            internal override IEnumerable <SevenZipEntry> GetEntries(Stream stream)
            {
                List <SevenZipArchiveEntry> source = Enumerable.ToList <SevenZipArchiveEntry>(this.archive.Entries);

                stream.Position = 0L;
                foreach (SevenZipArchiveEntry iteratorVariable1 in Enumerable.Where <SevenZipArchiveEntry>(source, delegate(SevenZipArchiveEntry x) {
                    return(x.IsDirectory);
                }))
                {
                    yield return(iteratorVariable1);
                }
                foreach (IGrouping <CFolder, SevenZipArchiveEntry> iteratorVariable2 in Enumerable.GroupBy <SevenZipArchiveEntry, CFolder>(Enumerable.Where <SevenZipArchiveEntry>(source, delegate(SevenZipArchiveEntry x) {
                    return(!x.IsDirectory);
                }), delegate(SevenZipArchiveEntry x) {
                    return(x.FilePart.Folder);
                }))
                {
                    this.currentFolder = iteratorVariable2.Key;
                    if (iteratorVariable2.Key == null)
                    {
                        this.currentStream = Stream.Null;
                    }
                    else
                    {
                        this.currentStream = this.archive.database.GetFolderStream(stream, this.currentFolder, null);
                    }
                    foreach (SevenZipArchiveEntry iteratorVariable3 in iteratorVariable2)
                    {
                        this.currentItem = iteratorVariable3.FilePart.Header;
                        yield return(iteratorVariable3);
                    }
                }
            }
Ejemplo n.º 3
0
        protected override IEnumerable <SevenZipArchiveEntry> LoadEntries(IEnumerable <SevenZipVolume> volumes)
        {
            Stream stream = Enumerable.Single <SevenZipVolume>(volumes).Stream;

            this.LoadFactory(stream);
            for (int i = 0; i < this.database.Files.Count; i++)
            {
                CFileItem fileEntry = this.database.Files[i];
                if (!fileEntry.IsDir)
                {
                    yield return(new SevenZipArchiveEntry(this, new SevenZipFilePart(stream, this.database, i, fileEntry)));
                }
            }
        }