【问题标题】:Is there a way to open files in a zip file without decompressing (c#)有没有办法在不解压缩的情况下打开 zip 文件中的文件(c#)
【发布时间】:2021-01-20 13:38:41
【问题描述】:

我的问题很简单,我有一个包含很多文件的 zip 文件(混合:pdf png 和 txt)。我需要编写一个 C# 程序来查看 zip 文件,循环并仅打开 png 文件而不解压缩。我找到的所有解决方案都包括解压缩整个 zip 文件,这会使目标文件夹更重。 最简单的方法是什么?

非常感谢,

乔什。

【问题讨论】:

  • 您的意思可能是“不解压到文件系统”,或者?解压到内存可以吗?然后使用ZipArchiveEntry.Open
  • 这是来自 msdn 的示例,使用 System.IO.Compression docs.microsoft.com/en-us/dotnet/api/… 遍历 zipEntries 并仅解压缩特定
  • 我不在乎内存,我受够了!是的,我的意思是没有像在 Windows 中正常解压缩那样解压缩到目标路径......对不起,如果我不是更具体

标签: c# zip compression


【解决方案1】:

我相信您可以使用 System.IO.Compression 库...

程序集:System.IO.Compression.ZipFile.dll

类似下面的...

using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        if (entry.FullName.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
        {
            entry.ExtractToFile(destinationPath);
        }
    }
}

【讨论】:

  • 这很好,但是我想打开文件而不是存储它们。我使用了 entry.Open() 方法。但是,什么都没有打开,我用一个计数器变量验证了我得到了似乎有效的 zip 文件中文件的确切数量,算法找到了 zipfile 中 png 文件的确切数量
  • 我只是用 entry.Open() 替换了最后一行
  • Open 打开一个流以读取内容。这可能不是你想要的。如果不解压缩,则无法从另一个应用程序的存档中打开文件。如果需要,您可以提取到临时文件。
  • 好的,我现在明白了。所以我想我可以提取它们,打开它们然后删除临时文件夹。谢谢大家的有用答案
猜你喜欢
  • 2012-03-18
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多