c# - 如何减少提取文件所需的时间?

标签 c# extract zip dotnetzip

我用 C# 编写了一个程序,它处理大约 30 个压缩文件夹,总共有大约 35000 个文件。我的目的是读取每个文件以处理其信息。截至目前,我的代码提取所有文件夹,然后读取文件。这个过程的问题是它需要大约 15-20 分钟才能发生,这很长。

我正在使用以下代码提取文件:

void ExtractFile(string zipfile, string path)
{
    ZipFile zip = ZipFile.Read(zipfile);
    zip.ExtractAll(path);
}

提取部分是处理时间最长的部分。我需要减少这个时间。有没有一种方法可以在不解压缩的情况下读取压缩文件夹中文件的内容?或者如果有人知道任何其他方法可以帮助我减少这段代码的时间?

提前致谢

最佳答案

您可以尝试将每个条目读入内存流而不是文件系统:

ZipFile zip = ZipFile.Read(zipfile);
foreach(ZipEntry entry in zip.Entries)
{
    using(MemoryStream ms = new MemoryStream())
    {
        entry.Extract(ms);
        ms.Seek(0,SeekOrigin.Begin);
        // read from the stream
    }

}

关于c# - 如何减少提取文件所需的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387561/

相关文章:

c# - 如何在不实际重载的情况下创建具有重载好处的函数?

c# - 我们如何在一行中调用多个可选函数?

c# - 具有继承 TPH 的 EF 4.1 Code First 复杂类型

c# - 访问另一个线程中的方法返回的值

java - 使用前后空格从短语中提取单词?

css - 从 Tinymce 4.x 获取自运行内容

linux - 非 root 用户解压缩文件时是否可以保留 setgid 位?

c - 从二进制文件中读取十六进制

linux - 如何解决 linux 操作系统中的 "unzip: cannot find or open"错误

python - 读取发送到 Flask 服务器的 zip 文件而不将其存储在磁盘上