在java程序中,我正在压缩像这样的InputStream:
ChannelBufferOutputStream outputStream = new ChannelBufferOutputStream(ChannelBuffers.dynamicBuffer(BUFFER_SIZE));
GZIPOutputStream compressedOutputStream = new GZIPOutputStream(outputStream);
try {
IOUtils.copy(inputStream, compressedOutputStream);
} finally {
// this should print the byte size after compression
System.out.println(outputStream.writtenBytes());
}
我正在使用json文件测试此代码,该文件大约是31.000字节未压缩,并且在磁盘上压缩了大约7.000字节。发送一个将未压缩的json文件包装到上面的代码的InputStream,outputStream.writtenBytes()返回10,这表示它压缩到只有10个字节。这似乎不对,所以我想知道问题出在哪里。 ChannelBufferOutputStream javadoc说:到目前为止,返回此流的写入字节数。所以应该有效。
答案 0 :(得分:3)
GZIPOutputStream.finish()
或flush()
方法