我正在尝试将两个小文件添加到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()
答案 0 :(得分:4)
使用管道流时,您需要在写入PipedInputStream
的同时从PipedOutputStream
读取,否则管道会填满,写入将会阻止。
根据你的代码,你没有做阅读部分(当然是在一个单独的线程中)。您可以使用FileOutputStream
对其进行测试,它应该很好地编写文件。