C#压缩解压程序

自己写的一个压缩解压程序:

class Program { Byte[] buffer; FileStream infile; public Program() { } private void Compress_File(string fileName) { bool useAsync = true; infile = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 2000, useAsync); buffer = new byte[infile.Length]; int ln = buffer.Length; IAsyncResult ar = infile.BeginRead(buffer, 0, ln, new AsyncCallback(Zip_Completed), fileName); Console.WriteLine("Compress is successfull!"); Console.Read(); } private void DeCompress_File(string fileName) { bool useAsync = true; infile = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 2000, useAsync); buffer = new byte[infile.Length]; int ln = buffer.Length; IAsyncResult ar=infile.BeginRead(buffer,0,ln,new AsyncCallback(UnZip_Completed),fileName); Console.WriteLine("DeCompress is successfull!"); Console.Read(); } private void Zip_Completed(IAsyncResult asResult) { string fileName = (String)asResult.AsyncState; infile.EndRead(asResult); infile.Close(); MemoryStream ms = new MemoryStream(); GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress, true); zipStream.Write(buffer, 0, buffer.Length); zipStream.Close(); FileStream fs = new FileStream(fileName + ".gz", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); byte[] compressedData = ms.ToArray(); fs.Write(compressedData, 0, compressedData.Length); fs.Close(); } private void UnZip_Completed(IAsyncResult asResult) { string fileName = (string)asResult.AsyncState; infile.EndRead(asResult); infile.Close(); MemoryStream ms = new MemoryStream(buffer,0,buffer.Length); GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress, true); byte[] compressData = new byte[buffer.Length]; zipStream.Read(compressData, 0, compressData.Length); //zipStream.Write(buffer, 0, buffer.Length); zipStream.Close(); FileStream fs = new FileStream(fileName.Substring(0,fileName.LastIndexOf(".")), FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); //byte[] compressData = ms.ToArray(); fs.Write(compressData, 0, compressData.Length); fs.Close(); } static void Main(string[] args) { Program p = new Program(); p.DeCompress_File(@"F:/new.xml.gz"); } }

你可能感兴趣的:(C#压缩解压程序)