在此代码示例中,我们将学习如何使用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();
}
}
}