【发布时间】:2016-10-28 11:12:08
【问题描述】:
我正在使用 GZIP 压缩来压缩文件。考虑解压的代码sn-p
public static void decompress(File compressed, File raw)
throws IOException
{
InputStream in =
new GZIPInputStream(new FileInputStream(compressed));
OutputStream out = new FileOutputStream(raw);
byte[] buffer = new byte[1000];
int len;
while((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
in.close();
out.close();
}
请澄清以下内容
- 这是否会以块的形式解压缩文件(即解压缩仅在缓冲区中读取的文件内容)
- 这是否与解压缩整个文件相同(即,通过提供非常大的缓冲区大小)。如果有怎么办?
- GZIP 算法读取多少字节来压缩/解压一圈?这是按字节读取还是 GZIP 会读取缓冲区中的全部内容以进行压缩/解压缩?
- 分块压缩文件与整个文件的压缩率?
【问题讨论】:
-
这不会压缩任何东西。
-
对不起,这是我的错误。刚刚附上解压示例代码。
-
这里没有GZIP解压,虽然应该有。压缩到文件的工作方式与压缩到任何其他流的方式相同,相反 dpso 进行解压缩。你的问题的动机是模糊的。不要对未引用的文本使用引号格式。
-
我在这里知道的动机是 gzip 文件压缩会不同 i) 当我们输入整个文件时和 ii) 当我们读取缓冲区中的文件并将缓冲区内容提供给压缩写入 gzip 压缩时。跨度>
标签: java compression gzip