【问题标题】:Unable to unzip zip file using Ionic which via WebClient无法使用通过 WebClient 的 Ionic 解压缩 zip 文件
【发布时间】:2015-12-11 11:31:14
【问题描述】:

我正在使用Ionic dll 解压缩 zip 文件。但它不适用于通过WebClient 下载的文件。

它会抛出以下错误:

  • 无法将 D:\test.zip 读取为 zip 文件
  • 无法读取块 - 没有数据! (位置 0x10000002F)

我正在使用以下代码解压缩文件

if (File.Exists(compressedFilePath))
{
    ZipFile zipFile = new ZipFile(compressedFilePath);

    zipFile.ExtractAll(directoryPath,ExtractExistingFileAction.OverwriteSilently);
    zipFile.Dispose();
}

请建议任何其他可用的选项来下载 zip 文件并将其解压缩。

【问题讨论】:

    标签: c# unzip webclient


    【解决方案1】:

    这是不寻常的,但可能是因为内存流和/或位置已经设​​置,试试这个:

    if (File.Exists(compressedFilePath))
    {
        ZipFile zipFile = new ZipFile(compressedFilePath);
        zipFile.Flush();
        zipFile.Position = 0;
        zipFile.ExtractAll(directoryPath,ExtractExistingFileAction.OverwriteSilently);
        zipFile.Dispose();
    }
    

    【讨论】:

    • 它从拳头抛出错误(与我提到的问题相同)。它不允许我初始化 ZipFile。
    • 文件下载是否可能未完成或已关闭?您是否尝试过使用本地创建和测试的 zip 文件来查看它是否有效?
    【解决方案2】:

    我遇到了同样的问题,ZIP 文件是正确的。验证:unzip -t {filename}

    再挖一点,发现一个内部错误:InnerException = {" Bad signature (0x08A90992) at position 0x004D4914"}

    然后我用 WinRar 解压缩它并再次压缩它以确保在 WinRar 选项中进行 ZIP 压缩,瞧!成功了!!!

    可能我以前的 ZIP 文件与 ZIP 文件不完全兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      相关资源
      最近更新 更多