我有一个大型的ZIP文件,其中包含许多目录,每个目录都需要读取数万个小文件。
使用7-Zip从ZIP中提取它们的过程需要相当长的时间。在C#中,我可以先在整个ZIP上提取整个ZIP,然后再进行操作,但理想情况下我只想从ZIP读取一个文件到内存中,而不必将其提取到磁盘上的某个位置。
我查看了本地C#ZIP实用程序以及DotNetZip和SharpZipLib,但没有看到任何与我所追求的直接相关的内容。
这可以做到吗?它是否真的会提供任何性能优势,而不仅仅是首先提取?
答案 0 :(得分:2)
using (ZipArchive zipFile = ZipFile.OpenRead(zipPath))
{
foreach(ZipArchiveEntry zip in zipFile.Entries)
{
System.Console.WriteLine("Zipfile: {0}", zip.FullName);
System.Console.WriteLine("Zipfile: {0}", zip.Length);
}
}
答案 1 :(得分:-1)
您可以使用DotNetZip从zip文件中提取每个fileName(及其属性)。
using (ZipFile zipFile = ZipFile.Read(ExistingZipFile))
{
foreach (ZipEntry zip in zipFile)
{
System.Console.WriteLine("Zipfile: {0}", zip.FileName);
System.Console.WriteLine("Zipfile: {0}", zip.Comment);
}
}