2017-06-21 37 views
1

如何在不提取到.net框架中的新位置的情况下解压(.zip)文件?具体来说,我试图将一个filename.csv.zip读入一个DataTable。 我知道.extractToDirectory(这是在ZipArchive内),但我只想提取到一个对象在C#中,我不想创建一个新的文件。 希望能够做到这一点W/O第三方图书馆,但我会拿我能得到的。如何在不提取到新位置的情况下解压c#文件中的.zip文件

+0

ZipArchiveEntry.Open()为您提供了一个Stream对象,允许您读取Zip归档条目的解压缩数据。 – elgonzo

回答

1

可能是一些错误,因为我从来没有测试这一点,但在这里你去:

List<byte[]> urmom = new List<byte[]>(); 
using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 
    foreach (ZipArchiveEntry entry in archive.Entries) 
     using (StreamReader r = new StreamReader(entry.Open())) 
       urmom.Add(r.ReadToEnd(entry)); 

基本上你使用ZipArchive的打开读取类通过每个条目进行迭代。此时,您可以使用流读取器来读取每个条目。从那里你可以从流创建一个文件,甚至如果你想读取文件名。我的代码不这样做,我有点懒惰。

相关问题