📅  最后修改于: 2023-12-03 15:07:53.644000             🧑  作者: Mango
在Java中,我们可以使用GZIP格式对文件进行压缩和解压缩,以减小文件大小,提高传输效率。
下面是使用GZIPOutputStream压缩文件的示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.GZIPOutputStream;
public class GzipCompress {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("file.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("file.gz");
BufferedOutputStream bos = new BufferedOutputStream(fos);
GZIPOutputStream gzos = new GZIPOutputStream(bos);
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {
gzos.write(buffer, 0, len);
}
gzos.finish();
gzos.close();
bos.close();
fos.close();
bis.close();
fis.close();
}
}
其中,我们首先通过FileInputStream读取需要压缩的文件,然后经过BufferedInputStream的缓存,再通过FileOutputStream将压缩后的文件写入磁盘中。
GZIPOutputStream是使用GZIP格式进行压缩的类,它接收一个OutputStream作为参数,可以将数据压缩后写入这个输出流中。
在上述代码中,我们使用while循环不断从输入流中读取数据并写入GZIPOutputStream中,并在最后调用finish()方法完成压缩。
下面是使用GZIPInputStream解压文件的示例代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.GZIPInputStream;
public class GzipDecompress {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("file.gz");
BufferedInputStream bis = new BufferedInputStream(fis);
GZIPInputStream gzis = new GZIPInputStream(bis);
FileOutputStream fos = new FileOutputStream("file.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int len;
while ((len = gzis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
fos.close();
gzis.close();
bis.close();
fis.close();
}
}
与压缩文件的代码相似,我们首先通过FileInputStream读取需要解压的文件,然后经过BufferedInputStream的缓存,再通过GZIPInputStream将压缩后的文件解压缩。
最后,我们将解压后的数据写入到FileOutputStream中,再通过BufferedOutputStream的缓存将数据写入磁盘中。
使用GZIP格式可以方便快捷地对文件进行压缩和解压,从而提高文件传输效率。在Java中,我们可以轻松使用GZIPOutputStream和GZIPInputStream来实现这些操作。