如何在 C# 中列出 .zip 文件夹的内容?
如何在 C# 中列出压缩文件夹的内容? 例如,如何知道压缩文件夹中包含多少个项目,以及它们的名称是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 C# 中列出压缩文件夹的内容? 例如,如何知道压缩文件夹中包含多少个项目,以及它们的名称是什么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
.NET 4.5 或更高版本最终具有使用 System.IO.Compression.ZipArchive 类处理通用 zip 文件的内置功能 (http://msdn.microsoft.com/en-us/library/system.io.compression .ziparchive%28v=vs.110%29.aspx) 位于程序集 System.IO.Compression 中。 不需要任何第三方库。
.NET 4.5 or newer finally has built-in capability to handle generic zip files with the
System.IO.Compression.ZipArchive
class (http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive%28v=vs.110%29.aspx) in assembly System.IO.Compression. No need for any 3rd party library.DotNetZip - .NET 语言中的 Zip 文件操作
DotNetZip 是一个小型、易于使用的类库,用于操作.zip 文件。 它可以使用 VB.NET、C# 或任何 .NET 语言编写的 .NET 应用程序轻松创建、读取和更新 zip 文件。
读取 zip 的示例代码:
DotNetZip - Zip file manipulation in .NET languages
DotNetZip is a small, easy-to-use class library for manipulating .zip files. It can enable .NET applications written in VB.NET, C#, any .NET language, to easily create, read, and update zip files.
sample code to read a zip:
如果您使用的是 .Net Framework 3.0 或更高版本,请查看 System.IO.Packaging 命名空间。 这将消除您对外部库的依赖。
具体请查看 ZipPackage类。
If you are using .Net Framework 3.0 or later, check out the System.IO.Packaging Namespace. This will remove your dependancy on an external library.
Specifically check out the ZipPackage Class.
检查 SharpZipLib
Check into SharpZipLib
恶心 - 使用 J# 运行时的代码太可怕了! 我不同意这是最好的方法 - J# 现在不再支持。 如果您想要的只是 ZIP 支持,那么它是一个巨大的运行时。
怎么样 - 它使用 DotNetZip (免费,MS-公共许可证)
Ick - that code using the J# runtime is hideous! And I don't agree that it is the best way - J# is out of support now. And it is a HUGE runtime, if all you want is ZIP support.
How about this - it uses DotNetZip (Free, MS-Public license)
如果您像我一样并且不想使用外部组件,这里是我昨晚使用 .NET 的 ZipPackage 类开发的一些代码。
需要注意的事项:
ZIP 存档的根目录中必须有一个 [Content_Types].xml 文件。 这对于我的要求来说不是问题,因为我将控制通过此代码提取的任何 ZIP 文件的压缩。 有关 [Content_Types].xml 文件的详细信息,请参阅:新标准用于打包数据 本文的图 13 下面有一个示例文件。
此代码使用 .NET 4.0 中的 Stream.CopyTo 方法
If you are like me and do not want to use an external component, here is some code I developed last night using .NET's ZipPackage class.
Things to note:
The ZIP archive MUST have a [Content_Types].xml file in its root. This was a non-issue for my requirements as I will control the zipping of any ZIP files that get extracted through this code. For more information on the [Content_Types].xml file, please refer to: A New Standard For Packaging Your Data There is an example file below Figure 13 of the article.
This code uses the Stream.CopyTo method in .NET 4.0
最好的方法是使用 .NET 内置的 J# zip 功能,如 MSDN 中所示:http://msdn.microsoft.com/en-us/magazine/cc164129.aspx。 在此链接中,有一个应用程序读取和写入 zip 文件的完整工作示例。 对于列出 zip 文件(在本例中为 Silverlight .xap 应用程序包)内容的具体示例,代码可能如下所示:
Aydsman 有一个右指针,但有 问题。 具体来说,您可能会发现打开 zip 文件时出现问题,但如果您打算仅创建包,那么这是一个有效的解决方案。 ZipPackage 实现抽象 Package 类并允许操作 zip 文件。 MSDN 中有一个如何执行此操作的示例:http://msdn。 microsoft.com/en-us/library/ms771414.aspx。 代码大致如下:
最好的方法似乎是使用 J#,如 MSDN 中所示: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx
有指向更多具有不同许可证的 c# .zip 库的指针,例如本文中的 SharpNetZip 和 DotNetZip:如何在 C# 中从未压缩的 zip 中读取文件?。 由于许可证要求,它们可能不适合。
The best way is to use the .NET built in J# zip functionality, as shown in MSDN: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx. In this link there is a complete working example of an application reading and writing to zip files. For the concrete example of listing the contents of a zip file (in this case a Silverlight .xap application package), the code could look like this:
Aydsman had a right pointer, but there are problems. Specifically, you might find issues opening zip files, but is a valid solution if you intend to only create pacakges. ZipPackage implements the abstract Package class and allows manipulation of zip files. There is a sample of how to do it in MSDN: http://msdn.microsoft.com/en-us/library/ms771414.aspx. Roughly the code would look like this:
The best way seems to use J#, as shown in MSDN: http://msdn.microsoft.com/en-us/magazine/cc164129.aspx
There are pointers to more c# .zip libraries with different licenses, like SharpNetZip and DotNetZip in this article: how to read files from uncompressed zip in c#?. They might be unsuitable because of the license requirements.