示例#1
0
 protected override void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock)
 {
     using (var memoryStream = new MemoryStream(fileBlockToProcess.Buffer, 0, fileBlockToProcess.BufferSize))
     {
         using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress, true))
         {
             freeFileBlock.BufferSize = gZipStream.Read(freeFileBlock.Buffer, 0, GZipConstants.BufferSize);
         }
     }
 }
示例#2
0
 protected override void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock)
 {
     using (var memoryStream = new MemoryStream(freeFileBlock.Buffer, 0, GZipConstants.MaxCompressedBufferSize))
     {
         using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
         {
             gZipStream.Write(fileBlockToProcess.Buffer, 0, fileBlockToProcess.BufferSize);
         }
         freeFileBlock.BufferSize = (int)memoryStream.Position;
     }
 }
示例#3
0
        protected static FileBlock[] CreateBlocks(int blockSize, int blockCount)
        {
            if (blockSize <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(blockSize));
            }
            if (blockCount <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(blockCount));
            }
            var blocks = new FileBlock[blockCount];

            for (int i = 0; i < blockCount; i++)
            {
                blocks[i] = new FileBlock(new byte[blockSize]);
            }
            return(blocks);
        }
示例#4
0
        protected override int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock)
        {
            int bytesRead;

            if ((bytesRead = fileStream.Read(_blockSizeBuffer, 0, GZipConstants.BlockSizeSize)) < GZipConstants.BlockSizeSize)
            {
                if (bytesRead == 0)
                {
                    return(0);
                }
                throw new FileFormatException(_badArchiveMessage);
            }

            freeFileBlock.BufferSize = BitConverter.ToInt32(_blockSizeBuffer, 0);
            if (fileStream.Read(freeFileBlock.Buffer, 0, freeFileBlock.BufferSize) < freeFileBlock.BufferSize)
            {
                throw new FileFormatException(_badArchiveMessage);
            }
            return(freeFileBlock.BufferSize);
        }
示例#5
0
 protected abstract void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite);
示例#6
0
 protected abstract int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock);
示例#7
0
 protected abstract void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock);
示例#8
0
 protected override void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite)
 {
     fileStream.Write(fileBlockToWrite.Buffer, 0, fileBlockToWrite.BufferSize);
 }
示例#9
0
 protected override void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite)
 {
     fileStream.Write(BitConverter.GetBytes(fileBlockToWrite.BufferSize), 0, GZipConstants.BlockSizeSize);
     fileStream.Write(fileBlockToWrite.Buffer, 0, fileBlockToWrite.BufferSize);
 }
示例#10
0
 protected override int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock)
 {
     freeFileBlock.BufferSize = fileStream.Read(freeFileBlock.Buffer, 0, GZipConstants.BufferSize);
     return(freeFileBlock.BufferSize);
 }