3

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

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

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

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

图像

图像

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

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

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

4

1 回答 1

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;
}
于 2013-07-10T14:52:17.617 回答