Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理包含空文件名文件的zip文件_Java_Unzip_Zipfile - Fatal编程技术网

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

Java 如何处理包含空文件名文件的zip文件,java,unzip,zipfile,Java,Unzip,Zipfile,我使用java.util.zip来提取zip文件,但是当我在特定的zip文件上运行它时,我会得到 java.util.zip.ZipException:打开zip文件时出错 接下来,我使用windows资源管理器打开zip文件,但它什么也看不到。如果我使用windows内置的提取实用程序,它会说zip文件无效 我用7zip解压了它,效果很好,所以我打开它,注意到:有一个没有文件名的文件夹 我不知道如何打开这个zip文件。我甚至不知道你可以有没有字符的文件名,或者有这样的应用程序编写的方式,认

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

java.util.zip.ZipException:打开zip文件时出错

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

我用7zip解压了它,效果很好,所以我打开它,注意到:有一个没有文件名的文件夹

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

我可以尝试哪些解决方案


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

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;
}

看起来名称只是空白。你为什么要为这个例外的案子寻找令人讨厌的解决办法?