2013-07-04 71 views
3

我使用java.util.zip提取zip文件,尽管当我在一个特定的zip文件运行它,我得到如何处理包含文件使用空文件名

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

展望未来,我打开压缩文件该zip文件使用Windows资源管理器,但它没有看到任何东西。如果我使用Windows内置的提取实用程序,它说压缩文件是无效的。

我使用7zip提取它,它工作正常,所以我打开它,注意到这个:有一个没有文件名的文件夹。

img

img

我不知道如何打开这个压缩文件。我甚至都没有意识到你可以有没有字符的文件名,或者是有这样的应用程序写的,认为这...

什么是我可以尝试一些解决方案?

我想到的一个解决方案就是执行7zip并让它处理文件,因为它的工作方式总是反正,但是我必须将7zip文件包含在应用程序中,因为最终用户可能没有在他们的机器上安装7zip 。

+0

看起来名字只是空白。你为什么试图为这个例外情况找到讨厌的解决方案? – Bart

回答

1

Windows将不允许空白文件夹名称或仅包含空格的文件夹名称,而7zip将允许您在压缩文件中创建文件夹,仅使用文件夹名称的空格。

您需要检查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; 
} 
相关问题