按行从 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();
    }
}