我有一个包含多个文本文件的7-zip归档文件。我希望读取这些文本文件的内容,而不必将它们提取到文件系统中。
有没有可能全部在内存中完成?
发布于 2018-12-22 23:55:14
安装名为SevenZipSharp.Interop的NuGet包
然后,您可以读取归档中的文件:
static void ReadFilesInArchive(string archiveFilename)
{
SevenZipBase.SetLibraryPath(@".\x86\7z.dll");
var extractor = new SevenZipExtractor(archiveFilename);
var filesInArchive = extractor.ArchiveFileData.ToList();
filesInArchive.ForEach(f =>
{
using (MemoryStream ms = new MemoryStream())
{
extractor.ExtractFile(f.FileName, ms);
ms.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(ms))
{
var lines = sr.ReadAllLines();
Console.WriteLine(lines.Count());
}
}
});
}请注意,这依赖于以下扩展方法:
public static class Extensions
{
public static IEnumerable<string> ReadAllLines(this StreamReader reader)
{
string line;
while ((line = reader.ReadLine()) != null)
{
yield return line;
}
}
}https://stackoverflow.com/questions/53897145
复制相似问题