【发布时间】:2016-03-09 11:14:55
【问题描述】:
Deflater 压缩一个由 0 到 99 字节组成的字节数组(长度为 100) 压缩的字节数组作为解压缩的输入传递给 Inflater。 解压器返回的长度在原始列表中缺少 3 个字节。
以下是代码:
byte orig[] = new byte[100];
IntStream.range(0, 100).forEach(i -> orig[i] = (byte) i);
System.out.println("OrigLength: " + orig.length);
byte[] compressed = new byte[orig.length];
Deflater deflater = new Deflater();
deflater.setInput(orig);
deflater.finish();
int compressedLength = deflater.deflate(compressed);
deflater.end();
System.out.println("--------------------------------------------------------------------");
System.out.println("CompressedLength::" + compressedLength);
for (int i = 0; i < compressedLength; i++) {
System.out.print(compressed[i] + " ");
}
Inflater decompresser = new Inflater();
decompresser.setInput(compressed, 0, compressedLength);
byte[] result = new byte[compressedLength];
int resultLength = decompresser.inflate(result);
decompresser.end();
System.out.println("\n--------------------------------------------------------------------");
System.out.println("DecompressedLength::" + resultLength);
for (int i = 0; i < resultLength; i++) {
System.out.print(result[i] + " ");
}
System.out.println("\n--------------------------------------------------------------------");
输出:
原始长度:100
压缩长度::100
120 -100 99 96 100 98 102 97 101 99 -25 -32 -28 -30 -26 -31 -27 -29 23 16 20 18 22 17 21 19 -105 -112 -108 -110 -106 -111 -107 -109 87 80 84 82 86 81 85 83 -41 -48 -44 -46 -42 -47 -43 -45 55 48 52 50 54 49 53 51 -73 -80 -76 -78 -74 -79 -75 -77 119 112 116 114 118 113 117 115 -9 -16 -12 -14 > -10 -15 -11 -13 15 8 12 10 14 9 13 11 - 113 -120 -116 -118 -114 -119 -115 -117 79 72
解压长度::97
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
进程以退出代码 0 结束
解压后长度为 97,原始长度为 100。请问我的代码有什么问题吗?
谢谢。
【问题讨论】:
标签: java zip compression