按行从7zip流中读取文本文件

问题描述 投票:0回答:1

我有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");
            }

你知道我要做什么吗?

c# streaming 7zip extraction
1个回答
0
投票

这是使用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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.