如何从zip文件中读取数据而不必解压缩整个文件

无论如何,.Net(C#)中是否可以从zip文件中提取数据而不解压缩整个文件?

我可能只是想从zip文件的开头提取数据(文件),显然这取决于压缩算法是否以确定的顺序压缩文件。

回答:

DotNetZip是您的朋友在这里。

一样容易:

using (ZipFile zip = ZipFile.Read(ExistingZipFile))

{

ZipEntry e = zip["MyReport.doc"];

e.Extract(OutputStream);

}

(您也可以提取到文件或其他目标位置)。

读取zip文件的目录很容易:

using (ZipFile zip = ZipFile.Read(ExistingZipFile))

{

foreach (ZipEntry e in zip)

{

if (header)

{

System.Console.WriteLine("Zipfile: {0}", zip.Name);

if ((zip.Comment != null) && (zip.Comment != ""))

System.Console.WriteLine("Comment: {0}", zip.Comment);

System.Console.WriteLine("\n{1,-22} {2,8} {3,5} {4,8} {5,3} {0}",

"Filename", "Modified", "Size", "Ratio", "Packed", "pw?");

System.Console.WriteLine(new System.String('-', 72));

header = false;

}

System.Console.WriteLine("{1,-22} {2,8} {3,5:F0}% {4,8} {5,3} {0}",

e.FileName,

e.LastModified.ToString("yyyy-MM-dd HH:mm:ss"),

e.UncompressedSize,

e.CompressionRatio,

e.CompressedSize,

(e.UsesEncryption) ? "Y" : "N");

}

}


DotNetZip曾经居住在Codeplex。Codeplex已关闭。旧的存档仍可在Codeplex上获得。看起来代码已迁移到Github:

  • https://github.com/DinoChiesa/DotNetZip。看起来是原始作者的回购。
  • https://github.com/haf/DotNetZip.Semverd。这似乎是当前维护的版本。它还通过Nuget打包在https://www.nuget.org/packages/DotNetZip/


以上是 如何从zip文件中读取数据而不必解压缩整个文件 的全部内容, 来源链接: utcz.com/qa/411005.html

回到顶部