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);
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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());
            }
        }