如何压缩多个文件/文件夹(GZipStream and C#)
2010-09-24 11:06
369 查看
注意:是GZIP
在.Net Framework 2.0 中添加了System.IO.Compression 类来实现对文件的压缩/解压(GZipStream方法),下面我们来看一个简单的例子.
Code1:
1 public static void Compress(string filePath, string zipPath)
2
public static void Decompress(string zipPath,string filePath)
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");//获取当前地址
string file = "file1.txt";//需要压缩的文件
string zip = "myzip";//保存文件名
//压缩
SampleCompress.Compress(Path.Combine(folder, file), Path.Combine(folder, zip));
2.解压
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
string file = "file1.txt";//需要压缩的文件
string zip = "myzip";//保存文件名
//解压
SampleCompress.Decompress(Path.Combine(folder, zip),
Path.Combine(Path.Combine(folder, "zipfolder"), file));
由代码和使用例子我们可以了解到,Code1 只是支持单个文本文件的压缩/解压, 代码非常简单,但是却实际上却没什么用途,功能太少,只是让你有个初步的认识.下面介绍Code2来实现本文的主题内容.
Code2:
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
GZip.Decompress(folder, Path.Combine(folder,"newfolder"), "myzip2.gzip");//解压到("newfolder"文件夹)
Code2代码很长,但是却很好用,在上面用例中我对两个文件和一个文件夹压缩,压缩后保存到"myzip2.gzip"文件中,这只是其中一个重载的版本,原代码来源于http://www.vwd-cms.com/Forum/Forums.aspx?topic=18 ,可惜作者在网上给出的代码Bug很多,无法正常运行,不过作者的辛劳还是值得称赞的.修改后(Code2)已经可以很好的使用了,并增加了压缩方法的重载.支持多种多个文件/文件夹的压缩和解压还原(支持中文).下面简单介绍下工作原理:读取多文件,格式化后,按照某种规则保存到一个文件中(上面用例保存到myzip2.gzip文件中)
----------------------------------------------------
0,/file2.ppt,2009-2-5 1:52:07,9216
//.....格式化后内容...//
1,/file3.doc,2009-2-5 1:14:54,24064
//.....格式化后内容...//
2,/img/file4.gif,2009-2-3 0:53:47,729
//.....格式化后内容...//
----------------------------------------------------
在整个过程中是通过创建一个临时文件来处理,解压中也根据上面内容格式来进行.当然由于这种独特的格式,是不支持rar/zip来解压的.
最后,提供代码和例子(VS2008开发,.Net Framework 3.5(C Sharp)编写),希望你喜欢.谢谢!
以上有word 文档直接粘贴,排版可能不太好看,你可以通过下面来下载相应的代码/文档
1,文档
2,原代码
3,用例
文章为原创,如果需要引用,请保留原地址. 有什么问题/错误的地方请联系 fox7805034 (at) hotmail.com
在.Net Framework 2.0 中添加了System.IO.Compression 类来实现对文件的压缩/解压(GZipStream方法),下面我们来看一个简单的例子.
Code1:
1 public static void Compress(string filePath, string zipPath)
2
public static void Decompress(string zipPath,string filePath)
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");//获取当前地址
string file = "file1.txt";//需要压缩的文件
string zip = "myzip";//保存文件名
//压缩
SampleCompress.Compress(Path.Combine(folder, file), Path.Combine(folder, zip));
2.解压
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
string file = "file1.txt";//需要压缩的文件
string zip = "myzip";//保存文件名
//解压
SampleCompress.Decompress(Path.Combine(folder, zip),
Path.Combine(Path.Combine(folder, "zipfolder"), file));
由代码和使用例子我们可以了解到,Code1 只是支持单个文本文件的压缩/解压, 代码非常简单,但是却实际上却没什么用途,功能太少,只是让你有个初步的认识.下面介绍Code2来实现本文的主题内容.
Code2:
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
string folder = Path.Combine(Server.MapPath("~"), "TestCompress");
GZip.Decompress(folder, Path.Combine(folder,"newfolder"), "myzip2.gzip");//解压到("newfolder"文件夹)
Code2代码很长,但是却很好用,在上面用例中我对两个文件和一个文件夹压缩,压缩后保存到"myzip2.gzip"文件中,这只是其中一个重载的版本,原代码来源于http://www.vwd-cms.com/Forum/Forums.aspx?topic=18 ,可惜作者在网上给出的代码Bug很多,无法正常运行,不过作者的辛劳还是值得称赞的.修改后(Code2)已经可以很好的使用了,并增加了压缩方法的重载.支持多种多个文件/文件夹的压缩和解压还原(支持中文).下面简单介绍下工作原理:读取多文件,格式化后,按照某种规则保存到一个文件中(上面用例保存到myzip2.gzip文件中)
----------------------------------------------------
0,/file2.ppt,2009-2-5 1:52:07,9216
//.....格式化后内容...//
1,/file3.doc,2009-2-5 1:14:54,24064
//.....格式化后内容...//
2,/img/file4.gif,2009-2-3 0:53:47,729
//.....格式化后内容...//
----------------------------------------------------
在整个过程中是通过创建一个临时文件来处理,解压中也根据上面内容格式来进行.当然由于这种独特的格式,是不支持rar/zip来解压的.
最后,提供代码和例子(VS2008开发,.Net Framework 3.5(C Sharp)编写),希望你喜欢.谢谢!
以上有word 文档直接粘贴,排版可能不太好看,你可以通过下面来下载相应的代码/文档
1,文档
2,原代码
3,用例
文章为原创,如果需要引用,请保留原地址. 有什么问题/错误的地方请联系 fox7805034 (at) hotmail.com
相关文章推荐
- 如何压缩多个文件/文件夹(GZipStream and C#)
- 如何压缩多个文件/文件夹(GZipStream and C#)
- 如何压缩多个文件/文件夹(GZipStream and C#)
- 如何压缩多个文件/文件夹(GZipStream and C#)
- C# 用GZipStream 压缩流来压缩和解压文件
- 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file
- C# GZipStream 压缩和解压文件
- C#使用SevenZipSharp库时如何去掉压缩文件中的目录文件夹
- 如何用c#打开文件夹并选择文件夹内的一个文件 open folder and select file
- 如何:复制、删除和移动文件和文件夹(C# 编程)
- C# 利用WinRAR (加密)压缩及解压缩 相关文件夹及文件
- C# 压缩文件夹及文件
- 如何用C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
- C# 利用WinRAR (加密)压缩及解压缩 相关文件夹及文件
- C#如何判断文件夹里的文件是图片,并且显示
- C# 压缩文件夹及文件
- 使用tar和gzip对某文件夹内的某类型文件进行压缩与解压缩
- 如何使用 C# 压缩文件及注意的问题
- C# GZipStream 压缩 解压
- C#如何遍历一个文件夹下面所有的文件、包括子文件夹里面的文件?