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
Post a Comment