java.util.zip.*中的问题,很奇怪。

lemonway 2002-10-25 11:48:10
import java.io.*;
import java.util.zip.*;

public class JavaTry
{
public static void main(String[] args) throws Exception
{
FileInputStream in = new FileInputStream(
"your_file_name");
Deflater def = new Deflater(Deflater.BEST_COMPRESSION);
byte[] buf = new byte[512];
byte[] output = new byte[256];
while(true) {
int byteRead = in.read(buf);
System.out.println("Read from input: " + byteRead);
if(byteRead == -1) {
System.out.println("Finish reading.");
def.finish();
while(!def.finished()) {
int byteDef = def.deflate(output);
System.out.println("Last Loop Deflated: " + byteDef);
}
break;
}
else {
System.out.println("Input seted.");
def.setInput(buf);
while(!def.needsInput()) {
int byteDef = def.deflate(output);
System.out.println("Deflated: " + byteDef); //★
}
}
}
System.out.println("Total Input: " + def.getTotalIn());
System.out.println("Total Output: " + def.getTotalOut());
in.close();
def.reset();
}
}

用一个5k以上的文件,为什么开始在★行总是0(第一次是2)?而总是要等到finish()了以后才开始压缩?
根据api定义,应该每次setInput之后,将进入★所在的循环进行压缩啊!

如果不能告诉我原因,请把您机器上运行的结果写出来好吗?
...全文
64 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhf 2002-12-03
  • 打赏
  • 举报
回复
和你的结果一样,如何输出压缩后的内容呢?
lemonway 2002-10-25
  • 打赏
  • 举报
回复
up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧