2010-11-22 52 views
3

我有以下java代碼來創建一個zip文件。該文件在Linux上正常工作,但Windows XP的本地提取程序阻止它。建議的解決方法(轉到文件屬性並取消阻止)也不起作用。我已經閱讀了關於網絡上的類似問題以及關於此問題的類似帖子,但是這些解決方案都不適用於我。任何可能導致問題的想法。Windows XP阻止我的程序創建的zip文件

ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); 
ZipOutputStream zipFile = new ZipOutputStream(byteOut); 
loop { 
    byte [] tempData = "some data".getBytes("UTF-8"); 
    ZipEntry entry = new ZipEntry("blah.txt"); //no path here 
    entry.setSize(tempData.length); //read somewhere that this might solve the issue, didn't work 
    entry.setTime((new Date()).getTime()); //tried with and without this.. this is probably redundent since putNextEntry sets the time to current too. 
    zipFile.putNextEntry(entry); 
    zipFile.write(tempData); 
    zipFile.closeEntry(); 
    } 
zipFile.close();   

附:

  1. 我的windows機器上沒有windows defender。
  2. 我曾嘗試設置zip條目的大小,但它仍然無效。
  3. 在zip條目中沒有指定絕對路徑,並且路徑中沒有斜槓。

謝謝!

編輯1:是的,我已經在Windows XP的其他機器上測試過,結果相同。我下載了7zip,但無法弄清楚如何檢查壓縮方法。如果有人能告訴我這樣做的步驟,我可以將壓縮方法添加到評論中。

編輯2:我使用windows本機提取向導,它說「Windows已阻止訪問這些文件以幫助保護您的計算機」。在此消息的下面有一個鏈接,指出「Windows阻止標記爲不可信的文件,爲什麼這些文件被阻止,我如何打開它們」。單擊該鏈接可爲您提供無法使用的解決方法(文件屬性 - >解除阻止)。

+1

奇怪...在另一臺機器上測試過?另外,它使用什麼壓縮方法(7-zip可以告訴你)? – 2010-11-22 22:19:00

回答

0

剛剛發現了這個問題,我的入口文件名中有一個時間戳,其中有一個:和窗口在外面嚇壞了。

ZipEntry entry = new ZipEntry(「blah.txt」); < - 時間戳在這裏,並不認爲這很重要,所以沒有在這裏複製真實姓名。