【问题标题】:c# zip file - Extract file lastc# zip 文件 - 最后解压文件
【发布时间】:2015-07-16 02:07:57
【问题描述】:

快速提问:我需要解压 zip 文件并最后解压某个文件。

更多信息:我知道如何使用 c# (fw 4.5) 提取 zip 文件。 我现在遇到的问题是我有一个 zip 文件,里面总是有一个文件名(例如)“myFlag.xml”和更多文件。

由于我需要支持一些旧应用程序来监听我要提取到的文件夹,因此我想确保 XML 文件始终是最后提取的。

对于 zip 函数,是否有类似“排除”之类的东西,可以提取除某个文件之外的所有文件,这样我就可以这样做,然后只提取文件?

谢谢。

【问题讨论】:

  • 向我们展示您的循环解压缩代码,我会展示给您。 :)
  • 我不熟悉有问题的 zip 库,但我怀疑您可以列出存档的内容,然后按您喜欢的任何顺序单独提取这些内容。
  • @oOo,我只是在使用:ZipFile.ExtractToDirectory(zipPath, extractPath);这将全部提取出来。
  • @ZoRo,我已经发布了答案。试试看。

标签: c# zip


【解决方案1】:

您可能可以在ZipArchive 上尝试一个 foreach 循环,并排除与您的参数不匹配的所有内容,然后在循环完成后提取最后一个文件。

类似这样的:

    private void TestUnzip_Foreach()
    {
        using (ZipArchive z = ZipFile.Open("zipfile.zip", ZipArchiveMode.Read))
        {
            string LastFile = "lastFileName.ext";

            int curPos = 0;
            int lastFilePosition = 0;
            foreach (ZipArchiveEntry entry in z.Entries)
            {
                if (entry.Name != LastFile)
                {
                    entry.ExtractToFile(@"C:\somewhere\" + entry.FullName);
                }
                else
                {
                    lastFilePosition = curPos;
                }
                curPos++;
            }
            z.Entries[lastFilePosition].ExtractToFile(@"C:\somewhere_else\" + LastFile);
        }
    }

【讨论】:

  • 看起来不错。所以在我运行它之后,我可以使用“archive.GetEntry("myFile.xml")”来只获取我的 XML。谢谢!
  • ZipArchive 在 MSDN 上
猜你喜欢
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2021-03-07
  • 1970-01-01
相关资源
最近更新 更多