2017-04-19 9 views
1

2つの小さなファイルを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

ありがとう、これは問題を解決しました –

関連する問題