Java如何压缩Gzip格式的文件?
在此代码示例中,我们将学习如何使用gzip压缩来压缩文件。从本质上讲,gzip只能压缩一个文件,不能将其用于压缩目录以及该目录中的所有文件。
您将用于以gzip格式压缩文件的类包括GZipOutputStream,FileInputStream和FileOutputStream类。压缩文件的步骤在下面的代码段注释中进行了描述。
package org.nhooo.example.zip;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class GZipCompressExample {
public static void main(String[] args) {
//GZip输入和输出文件。
String sourceFile = "data.txt";
String targetFile = "output.gz";
try (
//创建要输入的文件的文件输入流
//压缩。
FileInputStream fis = new FileInputStream(sourceFile);
//创建文件输出流,将gzip结果写入
//指定的文件名。
FileOutputStream fos = new FileOutputStream(targetFile);
//使用文件输出流创建gzip输出流对象
//作为论点。
GZIPOutputStream gzos = new GZIPOutputStream(fos)) {
//定义用于迭代文件的缓冲区和临时变量
//输入流。
byte[] buffer = new byte[1024];
int length;
//读取并输入文件输入流的所有内容
//到gzip输出流对象。
while ((length = fis.read(buffer)) > 0) {
gzos.write(buffer, 0, length);
}
//完成文件压缩并关闭所有流。
gzos.finish();
} catch (IOException e) {
e.printStackTrace();
}
}
}