Java zip.close() 挂起
Java zip.close() hangs
我正在尝试将两个小文件添加到一个 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
测试一下,应该能很好地写入文件。
我正在尝试将两个小文件添加到一个 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
测试一下,应该能很好地写入文件。