【问题标题】:How to handle zip files that contain files with empty filenames如何处理包含具有空文件名的文件的 zip 文件
【发布时间】:2013-07-04 20:37:12
【问题描述】:

我正在使用java.util.zip 来提取 zip 文件,但是当我在特定的 zip 文件上运行它时,我得到了

java.util.zip.ZipException: error in opening zip file

接下来,我使用 Windows 资源管理器打开 zip 文件,但它什么也没看到。如果我使用 Windows 内置的提取实用程序,它会说 zip 文件无效。

我使用 7zip 解压它,它运行良好,所以我打开它并注意到:有一个没有文件名的文件夹。

我不知道如何打开这个 zip 文件。我什至不知道你可以有没有字符的文件名,或者有以这种方式编写的应用程序考虑到这一点......

我可以尝试哪些解决方案?

我想到的一个解决方案是只执行 7zip 并让它处理文件,因为它无论如何都可以工作,但是我必须将 7zip 文件包含在应用程序中,因为最终用户的机器上可能没有 7zip。

【问题讨论】:

  • 看起来名字只是空格。您为什么要为这种特殊情况找到令人讨厌的解决方案?

标签: java unzip zipfile


【解决方案1】:

Windows 不允许空文件夹名称或仅包含空格的文件夹名称,而 7zip 将允许您在 zip 中创建文件夹名称仅包含空格的文件夹。

您需要检查 ZipEntry 返回的文件名中的空字符串。

private static String fixFileName(String filename)
{
    String[] sArray = filename.split("\\s+");
    String retval = "";
    for (String s : sArray)
    {
        if (s.trim().equals(""))
        {
            s = String.valueOf(System.currentTimeMillis());
        }
        retval += s;
    }

    return retval;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-21
    • 2013-12-14
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2021-05-03
    相关资源
    最近更新 更多