我正在使用 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;
}
关于java - 如何处理包含空文件名文件的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17477804/