Java zip.close()挂起

Java zip.close()挂起,java,scala,zip,inputstream,Java,Scala,Zip,Inputstream,我正在尝试向zip添加两个小文件,因为这是目标所需的格式。这两个文件都小于1000kb,但当我运行代码时,程序在zip.close()期间无限期挂起,没有错误。 我做错了什么 val is = new PipedInputStream() val os = new PipedOutputStream(is) val cos = new CountingOutputStream(os) val zip = new ZipOutputStream(cos) val fis = new FileIn

我正在尝试向zip添加两个小文件,因为这是目标所需的格式。这两个文件都小于1000kb,但当我运行代码时,程序在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()

使用管道流时,您需要在写入
PipedOutputStream
的同时读取
PipedInputStream
,否则管道将被填满,写入将被阻止


根据你的代码,你没有做阅读部分(当然是在一个单独的线程中)。您可以使用
文件输出流
对其进行测试,它应该能够很好地写入文件。

使用管道流时,您需要在写入
管道输出流
的同时从
管道输入流
读取数据,否则管道将被填满,写入将被阻止

根据你的代码,你没有做阅读部分(当然是在一个单独的线程中)。您可以使用
FileOutputStream
来测试它,它应该可以很好地编写文件