如何处理包含具有空文件名的文件的 zip 文件
Posted
技术标签:
【中文标题】如何处理包含具有空文件名的文件的 zip 文件【英文标题】:How to handle zip files that contain files with empty filenames 【发布时间】: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。
【问题讨论】:
看起来名字只是空格。您为什么要为这种特殊情况找到令人讨厌的解决方案? 【参考方案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;
【讨论】:
以上是关于如何处理包含具有空文件名的文件的 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章