java.util.zip.*中的问题,很奇怪。
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之后,将进入★所在的循环进行压缩啊!
如果不能告诉我原因,请把您机器上运行的结果写出来好吗?