2017-04-19 134 views
1

我想將兩個小文件添加到zip,因爲這是目標需要的格式。這兩個文件都小於1000kb,但是當我運行我的代碼時,程序在zip.close()期間無限期地掛起,沒有錯誤。 我在做什麼錯?Java zip.close()掛起

val is = new PipedInputStream() 
val os = new PipedOutputStream(is) 
val cos = new CountingOutputStream(os) 
val zip = new ZipOutputStream(cos) 

val fis = new FileInputStream(file) 
zip.putNextEntry(new ZipEntry(location)) 
var i = 0 
while(i != -1) { 
    zip.write(i) 
    i = fis.read() 
} 
zip.closeEntry() 
fis.close() 
zip.close() 

回答

4

當使用管道流,你需要在你寫的PipedOutputStream同時從PipedInputStream讀,否則管填充和文字將阻止。

根據你的代碼,你不是在閱讀部分(當然是單獨的線程)。你可以用FileOutputStream進行測試,它應該很好地寫入文件。

+0

謝謝,這解決了問題 –