在C#中使用压缩文件

时间:2011-05-09 19:09:18

标签: c# compression

我正在寻找一个开源的c#库,但允许在封闭的源项目中进行开发(因此类似于MIT / BSD样式)允许我使用压缩文件。我真的不是那么挑剔使用什么压缩,只是它是常见的东西(.zip,.rar,.tar,.tar.gz等...)。

我需要此功能的原因是我正在构建一个Web应用程序平台,现在是能够为平台构建和分发模块(或插件)的最佳和最简单的方法,我认为是使用压缩文件。压缩文件将保存.dll文件,其中包括源代码和剃刀视图以及任意数量的支持文件(图像,dotlesscss,javascript等等)。我想要做的是通过Web应用程序平台本身,允许用户只能上传一个压缩文件,让Web应用程序复制文件,提取其中的所有文件,并复制提取的文件进入正确的位置。

5 个答案:

答案 0 :(得分:6)

这已经内置到.net框架中:-)只需检查压缩命名空间:
http://msdn.microsoft.com/en-us/library/system.io.compression.aspx

答案 1 :(得分:2)

DotNetZip是一个非常流行的开源库。它使用Microsoft Public License (Ms-PL)许可证,您可以阅读here,并查看它是否符合您的需求。

答案 2 :(得分:0)

.net已经在system.io.compression

中内置了对gzip和deflate的支持

答案 3 :(得分:0)

如果您想要ZIP功能,那么.Net Framework中不存在真正,您需要转到SharpZipLib或DotNetZip等第三方库。 SharpZipLib不是BSD,它是GPL或LGPL,根据您的描述可能不适合您。 DotNetZip是Ms-PL,类似于BSD,检查http://www.opensource.org/licenses/ms-pl

GZIP流在System.IO.Compression命名空间中可用,该命名空间内置于.NET Framework基类库,但该流不读取或解压缩tar.gz文件,我想这就是你要做的想要使用,如果您将多个文件捆绑在一起。 GZIP本身默认只在压缩存档中存储一个文件,你可以使用该GZipStream来执行那个,但它不会执行Tars。 SharpZipLib做Tars,但是......许可证。

有一些Ms-PL第三方(小)tar库,结合.NET中的GZIP,可以让你轻松阅读tar.gz(或.tgz)文件。
http://cheeso.members.winisp.net/srcview.aspx?dir=Tar

答案 4 :(得分:0)

如果要将多个文件打包到一个压缩文件中,请考虑使用System.IO.Packaging中的类 - http://msdn.microsoft.com/en-us/library/ms569886.aspx - 允许将文件放入Zip文件(在您的内容之上需要一个额外的XML文件)。 / p>