Esempio n. 1
0
        public override long SaveFileData(Stream output, bool compress, IProgressContext progress = null)
        {
            // Write unchanged file
            if (!ContentChanged)
            {
                _origStream.Position = 0;
                _origStream.CopyTo(output);

                ContentChanged = false;
                return(_origStream.Length);
            }

            // Write newly chunked file
            FileData.Position = 0;
            var chunkedStreamData = ChunkStream.CreateChunked(FileData, _usesCompression, out var newChunks);

            chunkedStreamData.CopyTo(output);
            Chunks = newChunks;

            FileData.Position = 0;
            Entry.crc32       = Crc32.ComputeValue(FileData);

            ContentChanged = false;
            return(chunkedStreamData.Length);
        }
Esempio n. 2
0
        public L7cArchiveFileInfo(Stream fileData, string filePath, IList <L7cChunkEntry> chunks, L7cFileEntry entry) :
            base(fileData, filePath)
        {
            _chunkStream = new ChunkStream(fileData, entry.decompSize, ChunkInfo.ParseEntries(chunks));

            Chunks = chunks;
            Entry  = entry;
        }