2013-10-05 79 views
0

我想使用Zip4j庫壓縮一堆文件。我傳遞了我想要壓縮的文件的文件路徑列表,並將它們逐個添加到zip文件中。出於某種原因,最後一個文件不會被添加。我檢查了循環的索引,我很確定它們是正確的。我沒有收到任何異常或錯誤消息。以下是我的代碼:Zip4j缺少添加的最後一個文件

// get the path; paths refers to the list of files to compress 
    String uuidString = UUID.randomUUID().toString(); 
    String path = "H:/public/ZipFiles/" + uuidString + ".zip"; 

    try { 
     // create the new zip file 
     ZipFile zipFile = new ZipFile(path); 
     File fileToAdd; 
     String message = ""; 

     ZipParameters parameters = new ZipParameters(); 
     // set compression method to store compression 
     parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); 

     // Set the compression level 
     parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 

     // add each file to the zipFile 
     for(int i = 0; i < paths.size(); i++) 
     { 
      fileToAdd = new File(paths.get(i)); 

      if(fileToAdd.exists()) 
      { 
       System.out.println("writing file at " + paths.get(i) + " to the zip file"); 
       zipFile.addFile(fileToAdd, parameters); 
      } 
      else 
      { 
       message += "File with at path " + paths.get(i) + " was not found.\n"; 
      } 
     } 

    } catch (ZipException e) { 
     e.printStackTrace(); 
    } 

所有文件路徑在添加時都會打印。有任何想法嗎?

+0

是否丟失的文件名獲得該行打印出來:'的System.out.println(+ paths.get(我)+「「在寫文件」的拉鍊文件「);' – SrikanthLingala

+0

是的,打印所有文件路徑。 – user2200996

+0

我剛剛嘗試過使用本地機器上的某些文件進行編碼,它對我來說工作正常。我有zip文件中的最後一個文件。很難說爲什麼它沒有得到添加在你的情況。你可以發佈「路徑」的內容嗎?(除非它太大)。 – SrikanthLingala

回答

0

你不關閉ZipFile.

+0

我使用的ZipFile類不是Java.util.zip,它來自Zip4J庫。我正在使用的類沒有關閉ZipFile的方法。 – user2200996