按行从 7zip 流中读取文本文件
Read text file from 7zip stream by lines
我有一个7z文件,里面有一个文本文件,但是文本文件很大。我不想将其解压缩到文件夹中。我想打开流并即时从 7z 逐行读取文件,而不创建任何文件。
我找到了 SevenZipSharp 库。它有 SevenZipExtractor class。但我看不出有任何可能在不写入文件的情况下获取提取的数据(并以某种方式处理):
SevenZipExtractor.SetLibraryPath("c:\Program Files\7-Zip\7z.dll");
using (var tmp = new SevenZipExtractor(File.OpenRead(path)))
{
tmp.FileExtractionStarted += (s, e) =>
{
Console.WriteLine(String.Format("[{0}%] {1}",
e.PercentDone, e.FileInfo.FileName));
};
tmp.ExtractionFinished += (s, e) => { Console.WriteLine("Finished!"); };
tmp.ExtractArchive("E:\extractFolder");
}
你知道做我想做的事情的方法吗?
这就是你如何使用 SharpCompress:
var archive = SevenZipArchive.Open("test.7z");
var firstFile = archive.Entries.First();
var size = firstFile.Size;
using (var sr = new StreamReader(firstFile.OpenEntryStream()))
{
string line = sr.ReadLine();
while (line != null)
{
Console.WriteLine(line);
line = sr.ReadLine();
}
}
我有一个7z文件,里面有一个文本文件,但是文本文件很大。我不想将其解压缩到文件夹中。我想打开流并即时从 7z 逐行读取文件,而不创建任何文件。
我找到了 SevenZipSharp 库。它有 SevenZipExtractor class。但我看不出有任何可能在不写入文件的情况下获取提取的数据(并以某种方式处理):
SevenZipExtractor.SetLibraryPath("c:\Program Files\7-Zip\7z.dll");
using (var tmp = new SevenZipExtractor(File.OpenRead(path)))
{
tmp.FileExtractionStarted += (s, e) =>
{
Console.WriteLine(String.Format("[{0}%] {1}",
e.PercentDone, e.FileInfo.FileName));
};
tmp.ExtractionFinished += (s, e) => { Console.WriteLine("Finished!"); };
tmp.ExtractArchive("E:\extractFolder");
}
你知道做我想做的事情的方法吗?
这就是你如何使用 SharpCompress:
var archive = SevenZipArchive.Open("test.7z");
var firstFile = archive.Entries.First();
var size = firstFile.Size;
using (var sr = new StreamReader(firstFile.OpenEntryStream()))
{
string line = sr.ReadLine();
while (line != null)
{
Console.WriteLine(line);
line = sr.ReadLine();
}
}