Java 将文件压缩为GZIP格式

时间:2022-06-03 19:57:53

From: http://beginnersbook.com/2014/07/how-to-compress-a-file-in-gzip-format/


/* 将文件压缩为GZIP格式,使用GZIPOutputStream的write()方法将array of bytes写入压缩文件中
*/

import java.io.*;
import java.util.zip.GZIPOutputStream;

public class Exercise {

public static void main(String args[]) {
Exercise zipObj = new Exercise();
zipObj.gzipMyFile();
}

public void gzipMyFile() {
byte[] buffer = new byte[1024];
try {
// Specify Name and Path of Output GZip file here
GZIPOutputStream gos = new GZIPOutputStream(new FileOutputStream("/home/zjz/Desktop/myFile"
+ ".gz"));
// Specify the input file here
FileInputStream fis = new FileInputStream("/home/zjz/Desktop/myNewFile.txt");
// Read from input file and write to output GZip file
int length;
// fis.read(buffer), 结果时Buffer有了内容,同时返回读取内容的长度,读到文件末尾时读取内容的长度变为-1
while((length = fis.read(buffer)) > 0) {
/* public void write(byte[] buf, int off, int len):
Write array of bytes to the compressed output stream.
This method will block until all the bytes are written.
Parameter:
buf - the data to written
off - the start offset of the data
len - the length of the data
*/
gos.write(buffer, 0, length);
}
fis.close();
/* public void finish(): Finish writing compressed data to
the output stream without closing the underlying stream
*/
gos.finish();
gos.close();
System.out.println("File Compressed!!");

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

}