今天就跟大家聊聊有关如何在Java中使用GZIPOutputStream流压缩文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
public static void main (String [], args), throws 异常{ ,,,, ,,,//压缩文件 ,,,File src =, new 文件(“e:/xx/aa.txt"); ,,,File zipFile =, new 文件(“e:/xx/a.zip"); ,,,FileOutputStream fos =, new FileOutputStream (zipFile); ,,,ZipOutputStream zos =, new ZipOutputStream (fos)提交; ,,,BufferedInputStream bis =, new BufferedInputStream (new FileInputStream (src)); ,,,ZipEntry entry =, new ZipEntry (, src.getName ()); ,,,zos.putNextEntry(入口); ,,,int 计算; ,,,byte [], buf =, new 字节[1024]; ,,,while ((=count bis.read (buf)), !=, 1), { ,,,,,zos.write (buf,, 0,,数量); ,,,} ,,,bis.close (); ,,,//fos.close (); ,,,zos.close ();//,,,}
压缩的步骤是:
src将要压缩的文件,zipFile压缩后的文件,压缩流套接zipFile,然后将src文件写入zipFile,其中ZipEntry中放入的源文件的当前名称,putNextEntry是将源文件的当前名称定位到条目数据的开始处。
<强>补充:Java压缩压缩输入输出流强>
压缩是一种较为常见的压缩形式,在Java中要想实现ZIP的压缩需要导入java.util。zip包,可以使用此包中的ZipFile, ZipOutputStream, ZipInputStream, ZipEntry几个类完成。
<强> ZipOutputStream类的常用方法强>
<强> ZipInputStream类的常用方法强>
在Java IO中,不仅可以实现zip压缩格式的输入,输出,也可以实现罐及GZIP文件格式的压缩:
1、罐压缩的支持类保存在java.util。jar包中,常用的类有JarOutputStream (jar压缩输出流),JarInputStream (jar压缩输入流),使用JARFile (jar文件),JAREntry (jar实体)
2, GZIP是用于UNIX系统的文件压缩,在Linux中经常会使用到* . gz的文件,就是GZIP格式,GZIP压缩的支持类保存在java.util。压缩包中,常用的类有GZIPOutputStream (GZIP压缩输出流),GZIPInputStream (GZIP压缩输入流)
<强>注意:强>
1,压缩文件中的每一个压缩实体都使用ZipEntry保存,一个压缩文件中可能包含一个或多个ZipEntry对象。
2,在JAVA中可以进行压缩,jar,广州三种格式的压缩支持,操作流程基本上是一致的。
3, ZipOutputStream可以进行压缩的输出,但是输出的位置不一定是文件。
4, ZipFile表示每一个压缩文件,可以得到每一个压缩实体的输入流。
压缩文件
import . io . *; import zip . *, public class  MyZip {//大敌;创建类 ,private void  zip (String zipFileName, File inputFile), throws Exception { ,ZipOutputStream out =, new ZipOutputStream (new FileOutputStream ( ,,zipFileName);//,创建ZipOutputStream类对象 ,zip (inputFile,,,,,),,//,调用方法 ,System.out.println(“压缩中…“),,//,输出信息 ,out.close();,//,将流关闭 ,} , ,private void  zip (ZipOutputStream ,, File f, String 基地) throws 才能;Exception {,//方法重载 ,if (f.isDirectory()),{,//测试此抽象路径名表示的文件是否是一个目录 文件才能[],fl =, f.listFiles();,//,获取路径数组 out.putNextEntry才能(new ZipEntry(时间+ base “/?),,//,写入此目录的条目 base 才能=,base.length (),==, 0, ?,““,:, base +,“/?//,判断参数是否为空 for 才能;(int 小姐:=,0;,小姐:& lt;, fl.length;,我+ +),{,//循环遍历数组中文件 邮政才能(,,fl[我],base +, fl[我]); ,,} ,}else { out.putNextEntry才能(new ZipEntry(基地),,//,创建新的进入点//,才能创建FileInputStream对象 FileInputStream 才能;拷贝=,new FileInputStream (f); int 才能,b,,//,定义int型变量 System.out.println才能(基地); while 才能;((b =, in.read()), !=, 1),{,//如果没有到达流的尾部 out.write才能(b),,//,将字节写入当前邮政条目 ,,} in.close才能();,//,关闭流 ,} ,} , ,public static  void main (String[],临时),{,//主方法 ,MyZip book =, new MyZip();,//,创建本例对象 ,try {//,才能调用方法,参数为压缩后文件与要压缩文件 book.zip才能(“hello.zip",, new 文件(“src")); System.out.println才能(“压缩完成“),,//,输出信息 ,}catch (Exception 交货),{ ex.printStackTrace才能(); ,} ,} }如何在Java中使用GZIPOutputStream流压缩文件