package component; import org.testng.annotations.Test; import java.io.*; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public class TestGZip { @Test public void testGZip() throws IOException { //做准备压缩一个字符文件,这里的字符文件是UTF-8编码方式的。注意使用字符流而不是字节流的原因:字节流不能设置读取时候的编码, //字符流可以设置读取时候使用的编码 BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream( "D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\source.txt"), "UTF-8")); //使用GZIPOutputStream包装OutputStream流,使其具体压缩特性,最后会生成test.txt.gz压缩包 BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream( new FileOutputStream("D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\test.txt.gz"))); System.out.println("开始写压缩文件..."); int c; //每次循环读取一个字符的数据,并写一个字符的数据到压缩包中。 while ((c = in.read()) != -1) { out.write(String.valueOf((char) c).getBytes("UTF-8")); } in.close(); out.close(); System.out.println("开始读压缩文件..."); //使用GZIPInputStream包装InputStream流,使其具有解压特性 BufferedReader in2 = new BufferedReader(new InputStreamReader( new GZIPInputStream(new FileInputStream("D:\\IDEAworkspace\\testComponent\\src\\main\\resources\\zipsource\\test.txt.gz")), "UTF-8")); String s; //以行为单位来读取压缩文件里的内容 while ((s = in2.readLine()) != null) { System.out.println(s); } in2.close(); }
}
参考:https://www.cnblogs.com/visec479/p/4112881.html