public IndexEntry(byte[] bytes) { OriginalPosition = BitConverter.ToInt64(bytes, 0); CompressedChunk = new ChunkDescriptor { Position = BitConverter.ToInt64(bytes, CompressedChunkPositionOffset), Size = BitConverter.ToInt64(bytes, CompressedChunkSizeOffset) }; }
public byte[] Read(ChunkDescriptor chunkDescriptor) { source.Seek(chunkDescriptor.Position, SeekOrigin.Begin); var buffer = new byte[chunkDescriptor.Size]; source.Read(buffer, 0, buffer.Length); return(buffer); }
public static CompressedChunk FromSourceFile(string sourcePath, ChunkDescriptor descriptor) { var compressedChunk = new CompressedChunk { SourceChunkDescriptor = descriptor }; using (var reader = new CompressedChunkStreamReader(File.OpenRead(sourcePath))) { compressedChunk.data = reader.Read(descriptor); } return(compressedChunk); }
public byte[] Read(ChunkDescriptor chunkDescriptor) { using (var targetStream = new MemoryStream()) { using (var gzipStream = new GZipStream(targetStream, CompressionMode.Compress)) { var reader = new ChunkStreamReader(source); var chunk = reader.Read(chunkDescriptor); gzipStream.Write(chunk, 0, chunk.Length); } return(targetStream.ToArray()); } }
public ChunkDescriptor AppendToFile(string targetPath) { var position = File.Exists(targetPath) ? new FileInfo(targetPath).Length : 0; var targetChunk = new ChunkDescriptor { Position = position, Size = this.Length }; using (FileStream outFile = new FileStream(targetPath, FileMode.Append, FileAccess.Write)) { outFile.Write(data, 0, data.Length); } return(targetChunk); }
public byte[] Read(ChunkDescriptor chunkDescriptor) { source.Seek(chunkDescriptor.Position, SeekOrigin.Begin); var buffer = new byte[chunkDescriptor.Size]; source.Read(buffer, 0, buffer.Length); using (var targetStream = new MemoryStream()) { using (var gzipStream = new GZipStream(new MemoryStream(buffer), CompressionMode.Decompress)) { gzipStream.CopyTo(targetStream); } return(targetStream.ToArray()); } }