gpt4 book ai didi

c# - 无法提取 .zip 文件。获取无效数据异常

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:08 24 4
gpt4 key购买 nike

我有一个非常大的 zip 文件,其中包含其他 zip 文件。我希望我的 c# 程序能够识别该文件是一个 zip 文件,如果它是一个 zip 文件,则将其解压缩到与 zip 文件位于同一位置的文件夹中。我的代码在这里:

private void Unzip(OpenFileDialog tvZipOpen)
{
string zipFile = tvZipOpen.FileName; // file to unzip
int i = zipFile.LastIndexOf(".zip");
string targetDirectory = zipFile.Substring(0, i); // location to extract to
using (ZipArchive zip = ZipFile.OpenRead(zipFile))
{
zip.ExtractToDirectory(targetDirectory);
}

tvZipOpen.InitialDirectory = targetDirectory;
tvZipOpen.ShowDialog();
}

我正在使用 .NET 4.5 中的 ZipFile 类,我在这里调用了这个方法:

if (tvOpen.ShowDialog() == DialogResult.OK)
{
while (tvOpen.FileName.ToLower().EndsWith(".zip"))
{
Unzip(tvOpen);
}

return tvOpen.FileNames;
}

该代码在提取第一个 zip 文件时运行良好,但当我尝试提取第二个 zip 文件时,我收到一个 InvalidDataException,指出本地文件头已损坏。但是,我不认为它已损坏,因为我能够在 Windows 资源管理器中完美地打开和提取 zip 文件。我不确定它是一个带有 zip64 扩展名的大 zip 文件这一事实是否与它有任何关系,但无论问题是什么,当我在 Windows 资源管理器中打开和提取时为什么我没有遇到问题以及如何我要解决这个问题吗?任何帮助将不胜感激。

最佳答案

c# 不支持 .zip64 扩展。

您的 zip 文件有多大,因为如果它低于 4GiB,请将其重命名为 .zip,如果它大于 4GiB,它应该可以正常工作,请参阅此

http://dotnetzip.codeplex.com/

更改文件扩展名

  1. 打开 windows 资源管理器并按 Alt + V
  2. 然后转到工具,然后转到文件夹选项,确保取消选中隐藏已知文件类型的扩展名框,然后单击应用并确定。
  3. 然后简单地重命名文件以从扩展名中删除 64,因此它只是 .zip
  4. 然后在提示中点击是
  5. 然后您应该能够在您的程序中打开该文件

希望对你有帮助

关于c# - 无法提取 .zip 文件。获取无效数据异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com