如何在 C# 中仅使用 .net api 压缩多个文件
我喜欢压缩在我的网络应用程序中动态创建的多个文件。 这些文件应该被压缩。 为此,我不想使用任何第三方工具。 就像在c#中使用.net api一样
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我喜欢压缩在我的网络应用程序中动态创建的多个文件。 这些文件应该被压缩。 为此,我不想使用任何第三方工具。 就像在c#中使用.net api一样
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
随着 .NET Framework 4.5 的发布,通过更新 System.IO.Compression 添加了 ZipFile 类。 有一个很好的演练代码大师; 但是,基本原理符合以下示例:
With the release of the .NET Framework 4.5 this is actually a lot easier now with the updates to System.IO.Compression which adds the ZipFile class. There is a good walk-through on codeguru; however, the basics are in line with the following example:
在 .NET 3.0+ 中使用 System.IO.Packaging 。
查看 System.IO.Packaging 简介
如果您可以采用 .NET 4.5 依赖项,有一个 System.IO.Compression.ZipArchive 在该宇宙中; 请参阅演练文章位于此处(来自此处的 InfoQ 新闻摘要文章)
Use System.IO.Packaging in .NET 3.0+.
See this introduction to System.IO.Packaging
If you're able to take a .NET 4.5 dependency, there's a System.IO.Compression.ZipArchive in that universe; see walkthrough article here (via InfoQ news summary article here)
具有平面结构的简单 zip 文件:
您需要添加对 System.IO. Compression 和 System.IO. Compression. FileSystem 的引用
Simple zip file with flat structure:
You need to add reference to System.IO.Compression and System.IO.Compression.FileSystem
我不确定你不想使用第三方工具是什么意思,但我认为你不希望一些讨厌的互操作通过另一个软件以编程方式完成它。
我建议使用 ICSharpCode SharpZipLib
这可以作为参考 DLL 添加到您的项目中,并且相当不错创建 ZIP 文件并读取它们非常简单。
I'm not sure what you mean by not wanting to use thrid party tools, but I assume its that you don't want some nasty interop to programmatically do it through another piece of software.
I recommend using ICSharpCode SharpZipLib
This can be added to your project as a reference DLL and is fairly straightforward for creating ZIP files and reading them.
好吧,您可以使用以下函数压缩文件,您只需传递文件字节,该函数将压缩作为参数传递的文件字节并返回压缩的文件字节。
现在,如果您想导出为用户下载创建的 zip 字节,您可以使用以下行调用此函数
Well you can zip the files using following function you have to just pass the file bytes and this function will zip the file bytes passed as parameter and return the zipped file bytes.
Now if you want to export this zip bytes created for user to download you can call this function using following lines
您始终可以使用 System.Diagnostics.Process 类通过适当的命令行调用第三方可执行文件(例如 7-zip)。 这样就没有互操作性,因为您只是要求操作系统启动二进制文件。
You could always call a third-party executable like 7-zip with an appropriate command line using the System.Diagnostics.Process class. There's no interop that way because you're just asking the OS to launch a binary.
DotNetZip 是可行的方法 (dotnetzip.codeplex.com)...不要尝试 .NET 打包库..太难使用,而且它放入其中的 [Content_Types].xml 让我烦恼..
DotNetZip is the way to go (dotnetzip.codeplex.com)... don't try the .NET Packaging library.. too hard to use and the [Content_Types].xml that it puts in there bothers me..
查看 System.IO.Compression.DeflateStream。 链接的文档页面还提供了一个示例。
Check out System.IO.Compression.DeflateStream. The linked documentation page also offers an example.