如何处理包含空文件名文件的zip文件

时间:2013-07-04 20:37:13

标签: java unzip zipfile

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

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

继续,我使用Windows资源管理器打开zip文件,但它没有看到任何内容。如果我使用windows中内置的抽取实用程序,则说zip文件无效。

我使用7zip解压缩它并且工作正常,所以我打开它并注意到:有一个没有文件名的文件夹。

img

img

我不知道如何打开此zip文件。我甚至不知道你可以拥有没有字符的文件名,或者有一些应用程序是以这样的方式编写的......

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

我想到的一个解决方案是只执行7zip并让它处理文件,因为它仍然有效,但我必须将7zip文件包含在应用程序中,因为最终用户可能没有7zip在他们的机器上。

1 个答案:

答案 0 :(得分: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;
}