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