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之后,将进入★所在的循环进行压缩啊!

如果不能告诉我原因,请把您机器上运行的结果写出来好吗?
...全文
4 点赞 收藏 2
写回复
2 条回复
linhf 2002年12月03日
和你的结果一样,如何输出压缩后的内容呢?
回复 点赞
lemonway 2002年10月25日
up
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告