我必须在我的java程序中使用pkzip来压缩(因为标准的java zip例程在大型机上不起作用),我认为它正确压缩,但是需要很长时间才能完成。这是mycode
Runtime myruntime = Runtime.getRuntime();
Process newproc = myruntime.exec("c:\\app\\pkzipc.exe -add c:\\output\\test.zip c:\\doc\\foo.pdf c:\\doc\\bar.doc"");
foo.pdf
和bar.doc
各约20MB,如果我通过命令行执行此操作,则需要大约一秒钟来压缩,但是当我使用java时,需要30分钟到1小时才能完成拉链。知道为什么吗?
答案 0 :(得分:2)
您需要确保正在读取子进程的标准输出和错误流。如果pkzip生成输出,那么它将由操作系统缓冲,如果缓冲区填满,则可以预期子进程将被阻塞,直到缓冲区被清除。
Process
对象具有获取输入,输出和错误流的方法。创建从输出和错误流中读取的新线程,并将它们传输到System.out
和System.err
,或者如果您不关心它,则只丢弃输出。
答案 1 :(得分:1)
尝试使用Java的java.util.zip
API来操作.zip文件,看看tutorial。