簡體   English   中英

打開使用java創建的zip文件時出錯

[英]Error opening zip file created using java

我創建了一個小應用程序來從磁盤讀取一些文件並使用java.util.zip.ZipOutputStream壓縮它。 它成功創建了zip文件。 但在Windows中,當我嘗試打開它/解壓縮它時收到錯誤消息,如“Windows已阻止訪問這些文件,以幫助保護您的計算機”。 我只壓縮csv文件。 但是,如果我嘗試使用java本身的zipinputstream類解壓縮,它正確解壓縮它。 任何人都可以對它有所了解。

問候,Anoop

我知道這篇帖子是幾年前的。 但是,我第一次使用java.util.zip時遇到了類似的東西,這篇文章引導我解決這個問題。

Anoop關於絕對路徑的最后評論幫助我找到了問題所在。 由於我在搜索幾個帖子時沒有看到答案,我想在這里發帖 - 實際上回應了羅蘭的最后一個問題:

問題是我使用ZipEntry(文件)時使用的是完全限定的路徑/文件,而不是相對路徑。 我無法使用任何Windows操作系統實例打開生成的ZIP。 但是,我可以使用Java再次提取文件。 直到我用7zip打開拉鏈才意識到這個問題。 result.zip文件中的第一個文件夾是“D:”。 我的目錄是我D驅動器下的一條很長的路徑。 所以當打開我的“Results.zip”文件時,這是我在點擊zip文件中的目錄樹(從7zip)后看到的結果:Results.zip \\ D:\\ Apps \\ vertigo \\ instance5 \\ runtime \\ myManager \\ discoveryResources \\數據

“data”目錄實際上保存了我壓縮的所有文件/目錄。

當我從數據目錄中刪除路徑時,Results.zip以“data”而不是“D:”開頭。 該文件可以使用Windows 7,2012等打開。

希望它能幫助將來的某個人。

謝謝,-Chris

最后我發現了問題。 它與路徑有關。 它真的很有趣,但是如果你把文件的絕對路徑壓縮到zipoutputstream,就會發生這個錯誤。 我試過相對路徑和BINGO !!! 有效。 因此我在壓縮之前做了一些工作,並將文件的父節點指向當前工作目錄,然后壓縮。 謝謝大家的回復。

您看到Windows的安全功能保護您,而不是指示文件不正確。 很可能是因為它發現你的zip文件很奇怪。 可以7zip正確打開文件嗎?

創建該文件的Java進程是否仍在運行? 如果是,它可能會保持zip文件打開,這在Windows上通常意味着沒有其他進程可以從中讀取。 您的代碼應如下所示:

OutputStream os = new FileOutputStream("reports.zip");
try {
  ZipOutputStream zos = new ZipOutputStream(os);
  ...
} finally {
  os.close();
}

嘗試在OTN上的同一文件保存和加載多個圖像時出現問題 剛剛再次測試了代碼,當我通過雙擊文件打開images.zip時,Windows顯示內容就好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM