Awk*_*der 92 c# compression zip data-compression
无论如何在.Net(C#)中从zip文件中提取数据而不解压缩整个文件?
简单地说,我可能想从zip文件的开头提取数据(文件),显然这取决于压缩算法是否以确定的顺序压缩文件.
Sin*_*atr 103
使用.Net Framework 4.5(使用ZipArchive):
using (ZipArchive zip = ZipFile.Open(zipfile, ZipArchiveMode.Read))
foreach (ZipArchiveEntry entry in zip.Entries)
if(entry.Name == "myfile")
entry.ExtractToFile("myfile");
Run Code Online (Sandbox Code Playgroud)
在zipfile中找到"myfile"并将其解压缩.
Nic*_*rey 77
DotNetZip是你的朋友.
一样容易:
using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
ZipEntry e = zip["MyReport.doc"];
e.Extract(OutputStream);
}
Run Code Online (Sandbox Code Playgroud)
(您也可以提取到文件或其他目的地).
阅读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");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑注: DotNetZip曾经住在Codeplex.Codeplex已关闭.Codeplex仍然可以使用旧存档.看起来代码已迁移到Github:
小智 18
如果你想使用SharpZipLib,这样的东西将逐个列出并提取文件:
var zip = new ZipInputStream(File.OpenRead(@"C:\Users\Javi\Desktop\myzip.zip"));
var filestream = new FileStream(@"C:\Users\Javi\Desktop\myzip.zip", FileMode.Open, FileAccess.Read);
ZipFile zipfile = new ZipFile(filestream);
ZipEntry item;
while ((item = zip.GetNextEntry()) != null)
{
Console.WriteLine(item.Name);
using (StreamReader s = new StreamReader(zipfile.GetInputStream(item)))
{
// stream with the file
Console.WriteLine(s.ReadToEnd());
}
}
Run Code Online (Sandbox Code Playgroud)
基于此示例:zip文件中的内容
以下是如何从zip存档中将UTF8文本文件读取到字符串变量(.NET Framework 4.5及更高版本)中的方法:
string zipFileFullPath = "{{TypeYourZipFileFullPathHere}}";
string targetFileName = "{{TypeYourTargetFileNameHere}}";
string text = new string(
(new System.IO.StreamReader(
System.IO.Compression.ZipFile.OpenRead(zipFileFullPath)
.Entries.Where(x => x.Name.Equals(targetFileName,
StringComparison.InvariantCulture))
.FirstOrDefault()
.Open(), Encoding.UTF8)
.ReadToEnd())
.ToArray());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
116097 次 |
最近记录: |