using System; using System.Collections.Generic; using System.Text; using System.IO; using System.IO.Compression; namespace VA18.___文件压缩GZipStream { class Program { static void Main(string[] args) { //1>压缩 //1.创建读取流 File.OpenRead() //2.创建写入流 File.OpenWrite() //3.创建压缩流 new GzipStream();将写入流作为参数 //4.每次通过读取流读取一部分数据,通过压缩流写入 //2>解压 //1.创建读取流 File.OpenRead() //2.创建压缩流 new GzipStream();将写入流作为参数 //3.创建写入流 File.OpenWrite() //4.每次通过压缩流读取数据,通过写入流写入数据 string path; //正常文件 string zipPath ; //压缩文件 path = @"D:\桌面文件\文本文档.txt"; zipPath = @"D:\桌面文件\文本文档压缩.rar"; //1.创建读取文本文件的流 (要压缩那个文件) using (FileStream fsRead = File.OpenRead(path)) { //2创建写入文本文件的流 (压缩文件需要保存在哪里) using (FileStream fsWrite = File.OpenWrite(zipPath)) { //3 创建压缩流 压缩文件 (压缩的文件创建成压缩流 通过压缩流写入文件 ) using (GZipStream zipStream=new GZipStream (fsWrite ,CompressionMode.Compress )) { //4每次读取1024byte byte[] byts = new byte[1024*10]; int len = 0; while ((len = fsRead.Read(byts, 0, byts.Length)) > 0) { //通过压缩流写入文件 zipStream.Write(byts, 0, len); } } } } //1 Console.WriteLine("压缩完成"); //解压 path = @"D:\桌面文件\文本文档解压.rar"; //1.创建读取流 (要解压那个文件) using (FileStream fsRead = File.OpenRead(zipPath)) { //2 创建压缩流 解压文件 (压缩的文件创建成压缩流 通过压缩流写入文件 ) using (GZipStream gzipStream =new GZipStream (fsRead ,CompressionMode.Decompress)){ //3创建写入流 using (FileStream fsWrite = File.OpenWrite(path)) { byte[]byts=new byte [1024*10]; int len = 0; while ((len=gzipStream.Read (byts,0,byts.Length))>0 ){ //通过写入流写入数据 fsWrite.Write(byts,0,len); } } } } Console.WriteLine("解压完成"); Console.Read(); } } } |
|
来自: 时间剧毒 > 《序列化 反序列化 压缩》