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); }
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; }