【ACCESS精品源码栏目提醒】:网学会员为需要ACCESS精品源码的朋友们搜集整理了C#实现文件的压缩和解压缩 - 其它资料相关资料,希望对各位网友有所帮助!
C实现文件的压缩和解压缩在 C中实现文件的压缩和解压缩,需要使用第三方的组建完成。
常用的是:SharpZipLib 组建。
下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx1、压缩和解压缩有两种典型的算法,一种是 BZIP2 算法,另一种是 GZIP 算法。
BZIP2 能够获得较高的压缩比,但是压缩和解压缩比较耗时,GZIP 效率比较高,但是压缩比较低。
2、BZIP2 压缩算法的相关类,位于命名空间:ICSharpCode.SharpZipLib.BZip2 中,算法要求指定输入流和输出流,并指定压缩方法使用的块大小,一般为 2048.3、GZIP 压缩算法的相关类,位于命名空间:ICSharpCode.SharpZipLib.GZip 中,首先创建GZipOutputStream 类实例,作为压缩文件的输出流,使用 GZipOutputStream 类实例的 Write方法,将从源文件读取的数据写入输入流。
同时完成压缩运算。
4、使用实例:class ZipAndUnzipFile public static void GetZipAndUnzipFile string srcFile ....testzip.txt//准备压缩的文件路径 string zipFile ....testzip//压缩后的文件路径 string unzipFile ....testzip_unzip.txt//解压后的文件路径 Console.WriteLine使用 BZIP 开始压缩文件…… if BZipFilesrcFile zipFile .bz//使用 BZIP 压缩文件 Console.WriteLine文件压缩完成 else Console.WriteLine文件压缩失败 Console.WriteLine使用 BZIP 开始解压文件…… if UnBzipFilezipFile .bz unzipFile//使用 BZIP 解压文件 Console.WriteLine文件解压完成 else Console.WriteLine文件解压失败 Console.WriteLine使用 GZIP 开始压缩文件…… if GZipFilesrcFile zipFile .gz//使用 GZIP 压缩文件 Console.WriteLine文件压缩完成 else Console.WriteLine文件压缩失败 Console.WriteLine使用 GZIP 开始解压文件…… if UnGzipFilezipFile .gz unzipFile//使用 GZIP 解压文件 Console.WriteLine文件解压完成 else Console.WriteLine文件解压失败 Console.ReadLine //使用 BZIP 压缩文件的方法 static bool BZipFilestring sourcefilename string zipfilename bool blResult//表示压缩是否成功的返回结果 //为源文件创建文件流实例,作为压缩方法的输入流参数 FileStream srcFile File.OpenReadsourcefilename //为压缩文件创建文件流实例,作为压缩方法的输出流参数 FileStream zipFile File.Openzipfilename FileMode.Create try //以 4096 字节作为一个块的方式压缩文件 BZip2.CompresssrcFile zipFile 4096 blResulttrue catch Exception ee Console.WriteLineee.Message blResultfalse srcFile.Close//关闭源文件流 zipFile.Close//关闭压缩文件流 return blResult //使用 BZIP 解压文件的方法 static bool UnBzipFilestring zipfilenamestring unzipfilename bool blResult//表示解压是否成功的返回结果 //为压缩文件创建文件流实例,作为解压方法的输入流参数 FileStream zipFile File.OpenReadzipfilename //为目标文件创建文件流实例,作为解压方法的输出流参数 FileStream destFile File.Openunzipfilename FileMode.Create try BZip2.DecompresszipFile destFile//解压文件 blResulttrue catch Exception ee Console.WriteLineee.Message blResultfalse destFile.Close//关闭目标文件流 zipFile.Close//关闭压缩文件流 return blResult //使用 GZIP 压缩文件的方法 static bool GZipFilestring sourcefilename string zipfilename bool blResult//表示压缩是否成功的返回结果 //为源文件创建读取文件的流实例 FileStream srcFile File.OpenReadsourcefilename //为压缩文件创建写入文件的流实例, GZipOutputStream zipFile newGZipOutputStreamFile.OpenzipfilenameFileMode.Create try byte FileData new bytesrcFile.Length//创建缓冲数据 srcFile.ReadFileData 0