.NET I/O 学习笔记:对文件和目录进行解压缩操作

本文介绍了如何使用.NETFramework中的GZipStream类对文件进行解压缩,包括单个文件的压缩与解压过程,并提供了解压缩多个文件和目录的示例程序。同时,给出了相关参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  对文件和目录进行解压缩是一个非常常见的操作,在.NET Framework中为我们提供了:GZipStream类来对文件进行解压缩操作。此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法。GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式。 这种格式可以通过不涉及专利使用权的方式轻松实现。DeflateStream 和 GZipStream 中的压缩功能作为流公开。 由于数据是以逐字节的方式读取的,因此无法通过进行多次传递来确定压缩整个文件或大型数据块的最佳方法。 对于未压缩的数据源,最好使用DeflateStream类。如果源数据已压缩,则使用这些类时实际上可能会增加流的大小。

单个文件进行解压缩 

View Code
 1         /// <summary>
 2         ///单个文件压缩
 3         /// </summary>
 4         /// <param name="fi"></param>
 5         public static void Compress(FileInfo fi)
 6         {
 7             using (FileStream inFile = fi.OpenRead())
 8             {
 9                 if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fi.Extension != ".gz")
10                 {
11                     using (FileStream outFile = File.Create(fi.FullName + ".gz"))
12                     {
13                         using (GZipStream compress = new GZipStream(outFile, CompressionMode.Compress))
14                         {
15                             inFile.CopyTo(compress);
16                             Console.WriteLine("Compressed {0} from {1} to {2} bytes.", fi.Name, fi.Length.ToString(), outFile.Length.ToString());
17                         }
18                     }
19                 }
20             }
21         }
22 
23         /// <summary>
24         /// 单个文件解压
25         /// </summary>
26         /// <param name="fi"></param>
27         public static void Decompress(FileInfo fi)
28         {
29             using (FileStream inFile = fi.OpenRead())
30             {
31                 string curFile = fi.FullName;
32                 string origName = curFile.Remove(curFile.Length - fi.Extension.Length);
33 
34                 using (FileStream outFile = File.Create(origName))
35                 {
36                     using (GZipStream decompress = new GZipStream(inFile, CompressionMode.Decompress))
37                     {
38                         decompress.CopyTo(outFile);
39                         Console.WriteLine("Decompressed: {0}", fi.Name);
40                     }
41                 }
42             }
43         }

 

多个文件和目录解压缩

  GZipStream类只提供了对单个文件进行解压缩,对于多个文件和目录进行解压缩操作需要自己添加代码来实现。实现可以参考下面的示例程序。点击这里:下载示例

 

参考资料:

http://msdn.microsoft.com/zh-cn/library/system.io.compression.gzipstream(v=vs.100)

http://www.cnblogs.com/huihui0630/archive/2009/12/04/1617332.html

转载于:https://www.cnblogs.com/IPrograming/archive/2012/08/31/CSharp_Compress_Decompress.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值