例如,我有一个名为test.zip的存档。
我希望列出此存档中的所有文件并在其中存档而不解压缩。
最好在C#或Powershell上执行此操作。
有可能吗?
答案 0 :(得分:0)
您可能想先看一下ZipArchive类: https://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive(v=vs.110).aspx
如果您无法像我一样直接使用该类,可能会缺少ZipArchive参考。
正如本帖子中的user5093161所解释的:Cannot find `ZipArchive` in the “System.IO.Compression” namespace您可以安装以下两个NuGet包。
第一种方法可以是显示每个条目的全名,例如:
public void ZipTesting()
{
string zipPath = @"c:\zipTest\TestArchive.zip";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
Console.WriteLine(entry.FullName);
}
}
}
答案 1 :(得分:0)
您可以使用DotNetZip库实现此目的:
static void Main(string[] args)
{
using (ZipFile zip = ZipFile.Read(@"d:\test.zip"))
{
foreach (ZipEntry e in zip)
{
Console.WriteLine(e.IsDirectory);
}
}
}
答案 2 :(得分:0)
这是另一个基于System.IO.Compression.ZipArchive类遍历存档的版本
static void OutputEntries(ZipArchive archive) {
foreach (ZipArchiveEntry entry in archive.Entries) {
Console.WriteLine(entry.Name);
if (entry.FullName.EndsWith(".zip")) {
ZipArchive embeddedZipArchive = new ZipArchive(entry.Open());
OutputEntries(embeddedZipArchive);
}
}
像@Faenrig已经指出
如果您无法像我一样直接使用该课程 可能缺少ZipArchive参考。
正如此帖子中的user5093161所解释的:无法找到
ZipArchive
您可以安装两个“System.IO.Compression”命名空间 关注NuGet包。NuGet System.IO.Compression NuGet 40-System.IO.Compression.FileSystem