我有7z文件,其中包含一个文本文件,但是文本文件很大。我不想将其提取到文件夹中。我想打开流并在不创建任何文件的情况下从7z逐行读取文件。
我已经找到SevenZipSharp库。它具有SevenZipExtractor类。但我看不到不写入文件就无法提取数据(以及以某种方式处理)的可能性:
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");
}
你知道我想做什么吗?
答案 0 :(得分:1)
这是使用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();
}
}