Ejemplo n.º 1
0
 private static byte[] CompressData(Stream Input)
 {
     byte[] Buffer = new byte[CompressedHeader.DEFAULT_CHUNK_SIZE];
     using (var MS = new MemoryStream())
     {
         using (var BW = new BinaryWriter(MS))
         {
             int total = 0;
             do
             {
                 total = Input.Read(Buffer, 0, Buffer.Length);
                 if (total > 0)
                 {
                     var Header = new CompressedHeader();
                     Header.DecompressedLength = (ulong)total;
                     var Compressed = Ionic.Zlib.ZlibStream.CompressBuffer(Buffer);
                     Header.CompressedLength = (ulong)Compressed.Length;
                     Header.WriteHeader(BW);
                     BW.Write(Compressed);
                 }
             } while (total > 0);
             BW.Flush();
             return(MS.ToArray());
         }
     }
 }
Ejemplo n.º 2
0
 private static byte[] DecompressData(Stream Input)
 {
     using (var MS = new MemoryStream())
     {
         CompressedHeader Header;
         do
         {
             Header = new CompressedHeader(Input);
             byte[] Data = new byte[Header.CompressedLength];
             Input.Read(Data, 0, Data.Length);
             Data = Ionic.Zlib.ZlibStream.UncompressBuffer(Data);
             MS.Write(Data, 0, Data.Length);
         }while (Header.DecompressedLength == Header.MaxChunkSize);
         return(MS.ToArray());
     }
 }