2013-07-04 76 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; 
} 
相關問題