2017-05-17 32 views
0

我有一個代碼片段,理論上應該在將文件寫入壓縮文件時首先讀取壓縮文件的路徑。 (但這件事需要zip和例如一些txt文件,並真正將其移動到zip,但該文件是空的)首先,我認爲這個東西不工作,因爲我沒有關閉流,但現在我使用try-與,所以問題應該消失,但事實並非如此。爲什麼我的文件沒有讀取到zip壓縮文件

public void createZip(Path source) throws Exception 
    { 
     try(ZipInputStream zipIn = new ZipInputStream(Files.newInputStream(source)); 
     ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) 
     { 
      ZipEntry zipEntry = new ZipEntry(source.getFileName().toString()); 
      zipOut.putNextEntry(zipEntry); 

      int data; 

      while((data = zipIn.read()) > 0) 
      { 
       zipOut.write(data); 
      } 
     } 
    } 

回答

0

要在添加條目後正確使用ZipOutputStream,您需要刷新zip。 嘗試增加你的方法內執行以下操作:

zipOut.flush(); 
+0

沒有,還是有什麼和在zip文件的大小爲0 –

+0

還沒有得到壓縮的第一個條目,閱讀前從原始存檔中添加'zipIn.getNextEntry();'這會將光標移動到源存檔的第一個文件。 –