c# - GzipStream file block compression -


when use same gzipstream compress file blocks in loop result file compress successfully:

public static void compress1(string fi)         {             using (filestream infile = file.open(fi,filemode.open,fileaccess.read,fileshare.read))             {                  using (filestream outfile = file.create(fi + ".gz"))                 {                     using (gzipstream compress = new gzipstream(outfile,                             compressionmode.compress))                     {                         byte[] buffer = new byte[6315120];                         int numread;                         while ((numread = infile.read(buffer, 0, buffer.length)) != 0)                         {                             compress.write(buffer, 0, numread);                         }                     }                 }             }         } 

but when compress file blocks separately in different streams result file corrupts:

public static void compress2(string fi, int offset)     {         using (filestream infile = file.open(fi,filemode.open))         {              using (filestream outfile = file.openorcreate(fi + ".gz"))                 {                     using (gzipstream compress = new gzipstream(outfile,                             compressionmode.compress))                     {                         // copy source file compression stream.                         byte[] buffer = new byte[6315120];                         int numread=-1;                         infile.seek(offset,seekorigin.begin);                         numread = infile.read(buffer, 0, buffer.length);                         compress.write(buffer, 0, numread);                     }                 }         }     } 

in these examples have file size = 12630240. , devide 2 blocks, size of each block = 6315120 (buffer size). so, first block compress correctly in both methods, second block in second method compress different first method. missed?

what happening creating different files each gzipstream has 1 headers dividing doing creating different gz files , if write 2 same file corrupt file.


Comments