如何将.zip文件视为C#中的目录?

时间:2010-04-23 19:26:29

标签: c# zip

我希望能够像读取物理文件夹中的文件一样读取zip文件中的文件。如何在不提取文件的情况下完成此操作?

4 个答案:

答案 0 :(得分:3)

有一些组件允许您从.NET应用程序中查看.zip文件的内容:

我之前使用过#ziplib,但它的用途并不是很好。

答案 1 :(得分:3)

我最近开通了我的Platform.VirtualFileSystem C#库。

https://github.com/platformdotnet/Platform.VirtualFileSystem https://github.com/platformdotnet/Platform.VirtualFileSystem/wiki

您可以像这样阅读zip文件:

var directory = FileSystemManager.Default.ResolveDirectory("zip://[file:///c:/test.zip]/");
directory.GetFiles().ForEach(Console.WriteLine);

可以从NuGet获得:http://nuget.org/packages/Platform.VirtualFileSystem.Providers.Zip/

答案 2 :(得分:0)

首先.NET虽然它支持压缩文件,但它不支持ZIP文件(不确定.NET v4)

无论如何我使用了SharpZipLib http://www.icsharpcode.net/OpenSource/SharpZipLib/(GPL +例外情况仔细阅读)

这个库允许您浏览ZipStream并访问ZipEntry,它可以为您提供所有文件信息。

请记住,在压缩所需文件时,如果压缩文件夹,则第一个条目将是该文件夹。没问题,但是如果你想要一个清晰的列表,请将其压缩而不带文件夹路径。

还支持passworded拉链。

答案 3 :(得分:0)

您需要编写或查找将自身表示为虚拟文件系统的包装器。

api可以像单public Stream GetFile(string path)方法一样简单,也可以像完整FS一样复杂。

这可以使用任何支持您想要使用的文件格式的压缩库。

我使用Cheeso's DotNetZip库编写了一个简单的压缩VFS,它运行正常。