【发布时间】:2020-10-01 16:16:00
【问题描述】:
我需要将 zip 文件解压到内存(而不是磁盘)。我无法将其保存到目录中,即使是暂时的。
有没有办法将 zip 文件提取到内存中,并在那里执行“文件”功能?
我无法将文件作为文件流打开,因为这不允许我读取元数据(上次写入时间、属性等)。一些但不是所有的文件属性可以从 zip 条目本身中读取,但这对于我的目的来说是不够的。
我一直在使用:
using (ZipArchive archive = ZipFile.OpenRead(openFileDialog.FileName)) // Read files from the zip file
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if(entry.Name.EndsWith(".txt", StringComparison.InvariantCultureIgnoreCase)) // get .txt file
{
FileStream fs = entry.Open() as FileStream;
}
}
}
谢谢。
【问题讨论】:
-
ZipArchiveEntry.ExternalAttributes?您还需要访问哪些其他属性? -
你可以假设所有属性。
-
使用 MemoryStream 代替 FileStream。填充 MemoryStream 后,您需要在读取之前将位置设置为零。
-
我很惊讶您对 FileStream 的投射成功。我不明白这怎么可能。 Open 返回一个 Stream,您可以从中读取。