如何在Java中使用GZIPOutputStream流压缩文件

  介绍

今天就跟大家聊聊有关如何在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类的常用方法

如何在Java中使用GZIPOutputStream流压缩文件

<强> ZipInputStream类的常用方法

如何在Java中使用GZIPOutputStream流压缩文件

在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流压缩文件