精华内容
下载资源
问答
  • 主要介绍了Java压缩文件ZIP实例代码,有需要的朋友可以参考一下
  • java 压缩文件zip

    千次阅读 2013-08-27 16:09:08
    1.引言之前在 压缩与解压1---字符串的压缩与解压(http://www.cnblogs.com/java-pan/archive/2012/05/12/gzip1.html)中介绍过对字符串的压缩和解压,这个解压和解决用在系统之间大数据传输的时候还是可以大大的减少...

    鸣谢:http://blog.csdn.net/kalision/article/details/7864372

    强力推荐解压:http://blog.csdn.net/smile725775/article/details/8223134

    1.引言

    之前在 压缩与解压1---字符串的压缩与解压(http://www.cnblogs.com/java-pan/archive/2012/05/12/gzip1.html)

    中介绍过对字符串的压缩和解压,这个解压和解决用在系统之间大数据传输的时候还是可以大大的减少网络流量的。本节主要本别介绍对单个文件、多个文件的压缩。解压这里就不讲了,解压的话没什么实际意义,因为文件压缩后为zip格式的文件,现在windows系统解压这个格式的文件真是特多了。我个人认为这个压缩文件的功能在以下场景使用就比较合理:比如某运行的系统,在每天或者每周的固定时间会导出一批报表,如果我们不对导出的报表进行压缩,那么磁盘空间会大幅度的增加,如果我们对导出的文件进行压缩,那么磁盘空间的开销就会大大节省。

     

    2.文件压缩的中文问题

    中文,一直是个头疼的问题,同样,在这里我们对文件压缩也会出现中文乱码问题。对压缩的文件,如果文件名称是中文,压缩完成后,可以看到压缩包中的文件名称是乱码(文件的内容有中文,压缩后不会出现中文乱码问题),对于这种情况我们只要用ANT中的ant.jar中的类就可以解决此问题。压缩过程中会用到ZipEntry和ZipOutputStream类,如果我采用第一种方式,这样就会出现中文乱码;如果我采用第二种方式,中文乱码问题就可以解决。文件运行的对比效果我会在后面把截图贴出来做一下对比。

    第一种方式

    import java.util.zip.ZipEntry;

    import java.util.zip.ZipOutputStream;

    以上采用JDK API中自带的类时压缩的文件名会出现中文乱码

    第二种方式

    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipOutputStream;

    以上采用ANT中ant.jar包的类可以解决压缩的文件名的中文乱码问题

     

    3.下载jar包

    对于本节我只需要一个jar包,即ant.jar,提供jar包的下载路径如下:

     http://files.cnblogs.com/java-pan/jar-ant.rar

    4.method&class

    ZipEntry:

    ZipOutputStream:

     

    5.代码文件

     ZipFileUtil.java

    1. package zip;  
    2.    
    3.  import java.io.File;  
    4.  import java.io.FileInputStream;  
    5.  import java.io.FileOutputStream;  
    6.  import java.io.IOException;  
    7.    
    8.  /*  
    9.   * 采用JDK API中自带的类时压缩的文件会出现中文乱码  
    10.   */  
    11.  //import java.util.zip.ZipEntry;  
    12.  //import java.util.zip.ZipOutputStream;  
    13.    
    14.  /*  
    15.   * 采用ANT中ant.jar包的类可以解决中文乱码问题  
    16.   */  
    17.  import org.apache.tools.zip.ZipEntry;  
    18.  import org.apache.tools.zip.ZipOutputStream;  
    19.    
    20.  /**  
    21.   *Module:          ZipFileUtil.java  
    22.   *Description:    用zip对单个和多个文件进行压缩  
    23.   *Company:       xxx  
    24.   *Version:          1.0.0  
    25.   *Author:           pantp  
    26.   *Date:              May 24, 2012  
    27.   */  
    28.  public class ZipFileUtil {  
    29.    
    30.      public static void main(String[] args) throws Exception {  
    31.            
    32.          /*  
    33.           * 测试单个文件的ZIP压缩   
    34.           * 指定文件路径可以是绝对路径,也可以是相对路径  
    35.           */  
    36.          String file = "src/zip/文件1.txt";  
    37.          String zipFile1 = "src/zip/单个文件压缩.zip";  
    38.          boolean flag1 = zipSingleFile(file, zipFile1);  
    39.          System.out.println("\n**************压缩【单】个文件<author:pantp>******************************\n");  
    40.          if (flag1) {  
    41.              System.out.println("单个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile1);  
    42.          } else {  
    43.              System.out.println("单个文件ZIP压缩失败");  
    44.          }  
    45.          System.out.println("\n*******************************************************************************");  
    46.            
    47.          /*  
    48.           * 测试多个文件的ZIP压缩  
    49.           * 指定文件路径可以是绝对路径,也可以是相对路径  
    50.           */  
    51.  /*        String files[] = { "src/zip/文件1.txt", "src/zip/file2.txt" };  
    52.          String zipFile2 = "src/zip/多个文件压缩.zip";  
    53.          boolean flag2 = zipFiles(files, zipFile2);  
    54.          System.out.println("\n**************压缩【多】个文件<author:pantp>******************************\n");  
    55.          if (flag2) {  
    56.              System.out.println("多个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile2);  
    57.          } else {  
    58.              System.out.println("多个文件ZIP压缩失败");  
    59.          }  
    60.          System.out.println("\n*******************************************************************************");  
    61.          */  
    62.      }  
    63.    
    64.      /**  
    65.       *<p>  
    66.       *@param  file 待压缩文件的名称 例如,src/zip/文件1.txt  
    67.       *@param  zipFile 压缩后文件的名称 例如,src/zip/单个文件压缩.zip  
    68.       *@return boolean  
    69.       *@throws :IOException  
    70.       *@Function: zipSingleFile  
    71.       *@Description:单个文件的压缩  
    72.       *@version : v1.0.0  
    73.       *@author: pantp  
    74.       *@Date:May 24, 2012  
    75.       *</p>  
    76.       *Modification History:  
    77.       * Date                     Author          Version         Description  
    78.       * ---------------------------------------------------------------------  
    79.       * May 24, 2012        pantp           v1.0.0           Create  
    80.       */  
    81.      public static boolean zipSingleFile(String file, String zipFile)  
    82.              throws IOException {  
    83.          boolean bf = true;  
    84.          File f = new File(file);  
    85.          if (!f.exists()) {  
    86.              System.out.println("文件不存在");  
    87.              bf = false;  
    88.          } else {  
    89.              File ff = new File(zipFile);  
    90.              if (!f.exists()) {  
    91.                  ff.createNewFile();  
    92.              }  
    93.              // 创建文件输入流对象  
    94.              FileInputStream in = new FileInputStream(file);  
    95.              // 创建文件输出流对象  
    96.              FileOutputStream out = new FileOutputStream(zipFile);  
    97.              // 创建ZIP数据输出流对象  
    98.              ZipOutputStream zipOut = new ZipOutputStream(out);  
    99.              // 得到文件名称  
    100.              String fileName = file.substring(file.lastIndexOf('/') + 1, file.length());  
    101.              // 创建指向压缩原始文件的入口  
    102.              ZipEntry entry = new ZipEntry(fileName);  
    103.              zipOut.putNextEntry(entry);  
    104.              // 向压缩文件中输出数据  
    105.              int number = 0;  
    106.              byte[] buffer = new byte[512];  
    107.              while ((number = in.read(buffer)) != -1) {  
    108.                  zipOut.write(buffer, 0, number);  
    109.              }  
    110.              zipOut.close();  
    111.              out.close();  
    112.              in.close();  
    113.          }  
    114.          return bf;  
    115.      }  
    116.    
    117.      /**  
    118.       *<p>  
    119.       *@param files    待压缩的文件列表 例如,src/zip/文件1.txt, src/zip/file2.txt  
    120.       *@param zipfile 压缩后的文件名称 例如,src/zip/多个文件压缩.zip  
    121.       *@return boolean  
    122.       *@throws :Exception  
    123.       *@Function: zipFiles  
    124.       *@Description:多个文件的ZIP压缩  
    125.       *@version : v1.0.0  
    126.       *@author: pantp  
    127.       *@Date:May 24, 2012  
    128.       *</p>  
    129.       *Modification History:  
    130.       * Date                     Author          Version         Description  
    131.       * ---------------------------------------------------------------------  
    132.       * May 24, 2012        pantp           v1.0.0           Create  
    133.       */  
    134.      public static boolean zipFiles(String[] files, String zipfile)  
    135.              throws Exception {  
    136.          boolean bf = true;  
    137.    
    138.          // 根据文件路径构造一个文件实例  
    139.          File ff = new File(zipfile);  
    140.          // 判断目前文件是否存在,如果不存在,则新建一个  
    141.          if (!ff.exists()) {  
    142.              ff.createNewFile();  
    143.          }  
    144.          // 根据文件路径构造一个文件输出流  
    145.          FileOutputStream out = new FileOutputStream(zipfile);  
    146.          // 传入文件输出流对象,创建ZIP数据输出流对象  
    147.          ZipOutputStream zipOut = new ZipOutputStream(out);  
    148.    
    149.          // 循环待压缩的文件列表  
    150.          for (int i = 0; i < files.length; i++) {  
    151.              File f = new File(files[i]);  
    152.              if (!f.exists()) {  
    153.                  bf = false;  
    154.              }  
    155.              try {  
    156.                  // 创建文件输入流对象  
    157.                  FileInputStream in = new FileInputStream(files[i]);  
    158.                  // 得到当前文件的文件名称  
    159.                  String fileName = files[i].substring(  
    160.                          files[i].lastIndexOf('/') + 1, files[i].length());  
    161.                  // 创建指向压缩原始文件的入口  
    162.                  ZipEntry entry = new ZipEntry(fileName);  
    163.                  zipOut.putNextEntry(entry);  
    164.                  // 向压缩文件中输出数据  
    165.                  int nNumber = 0;  
    166.                  byte[] buffer = new byte[512];  
    167.                  while ((nNumber = in.read(buffer)) != -1) {  
    168.                      zipOut.write(buffer, 0, nNumber);  
    169.                  }  
    170.                  // 关闭创建的流对象  
    171.                  in.close();  
    172.              } catch (IOException e) {  
    173.                  e.printStackTrace();  
    174.                  bf = false;  
    175.              }  
    176.          }  
    177.          zipOut.close();  
    178.          out.close();  
    179.          return bf;  
    180.      }  
    181.        
    182.  }  
    package zip;
     
     import java.io.File;
     import java.io.FileInputStream;
     import java.io.FileOutputStream;
     import java.io.IOException;
     
     /*
      * 采用JDK API中自带的类时压缩的文件会出现中文乱码
      */
     //import java.util.zip.ZipEntry;
     //import java.util.zip.ZipOutputStream;
     
     /*
      * 采用ANT中ant.jar包的类可以解决中文乱码问题
      */
     import org.apache.tools.zip.ZipEntry;
     import org.apache.tools.zip.ZipOutputStream;
     
     /**
      *Module:          ZipFileUtil.java
      *Description:    用zip对单个和多个文件进行压缩
      *Company:       xxx
      *Version:          1.0.0
      *Author:           pantp
      *Date:              May 24, 2012
      */
     public class ZipFileUtil {
     
         public static void main(String[] args) throws Exception {
             
             /*
              * 测试单个文件的ZIP压缩 
              * 指定文件路径可以是绝对路径,也可以是相对路径
              */
             String file = "src/zip/文件1.txt";
             String zipFile1 = "src/zip/单个文件压缩.zip";
             boolean flag1 = zipSingleFile(file, zipFile1);
             System.out.println("\n**************压缩【单】个文件<author:pantp>******************************\n");
             if (flag1) {
                 System.out.println("单个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile1);
             } else {
                 System.out.println("单个文件ZIP压缩失败");
             }
             System.out.println("\n*******************************************************************************");
             
             /*
              * 测试多个文件的ZIP压缩
              * 指定文件路径可以是绝对路径,也可以是相对路径
              */
     /*        String files[] = { "src/zip/文件1.txt", "src/zip/file2.txt" };
             String zipFile2 = "src/zip/多个文件压缩.zip";
             boolean flag2 = zipFiles(files, zipFile2);
             System.out.println("\n**************压缩【多】个文件<author:pantp>******************************\n");
             if (flag2) {
                 System.out.println("多个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile2);
             } else {
                 System.out.println("多个文件ZIP压缩失败");
             }
             System.out.println("\n*******************************************************************************");
             */
         }
     
         /**
          *<p>
          *@param  file 待压缩文件的名称 例如,src/zip/文件1.txt
          *@param  zipFile 压缩后文件的名称 例如,src/zip/单个文件压缩.zip
          *@return boolean
          *@throws :IOException
          *@Function: zipSingleFile
          *@Description:单个文件的压缩
          *@version : v1.0.0
          *@author: pantp
          *@Date:May 24, 2012
          *</p>
          *Modification History:
          * Date                     Author          Version         Description
          * ---------------------------------------------------------------------
          * May 24, 2012        pantp           v1.0.0           Create
          */
         public static boolean zipSingleFile(String file, String zipFile)
                 throws IOException {
             boolean bf = true;
             File f = new File(file);
             if (!f.exists()) {
                 System.out.println("文件不存在");
                 bf = false;
             } else {
                 File ff = new File(zipFile);
                 if (!f.exists()) {
                     ff.createNewFile();
                 }
                 // 创建文件输入流对象
                 FileInputStream in = new FileInputStream(file);
                 // 创建文件输出流对象
                 FileOutputStream out = new FileOutputStream(zipFile);
                 // 创建ZIP数据输出流对象
                 ZipOutputStream zipOut = new ZipOutputStream(out);
                 // 得到文件名称
                 String fileName = file.substring(file.lastIndexOf('/') + 1, file.length());
                 // 创建指向压缩原始文件的入口
                 ZipEntry entry = new ZipEntry(fileName);
                 zipOut.putNextEntry(entry);
                 // 向压缩文件中输出数据
                 int number = 0;
                 byte[] buffer = new byte[512];
                 while ((number = in.read(buffer)) != -1) {
                     zipOut.write(buffer, 0, number);
                 }
                 zipOut.close();
                 out.close();
                 in.close();
             }
             return bf;
         }
     
         /**
          *<p>
          *@param files    待压缩的文件列表 例如,src/zip/文件1.txt, src/zip/file2.txt
          *@param zipfile 压缩后的文件名称 例如,src/zip/多个文件压缩.zip
          *@return boolean
          *@throws :Exception
          *@Function: zipFiles
          *@Description:多个文件的ZIP压缩
          *@version : v1.0.0
          *@author: pantp
          *@Date:May 24, 2012
          *</p>
          *Modification History:
          * Date                     Author          Version         Description
          * ---------------------------------------------------------------------
          * May 24, 2012        pantp           v1.0.0           Create
          */
         public static boolean zipFiles(String[] files, String zipfile)
                 throws Exception {
             boolean bf = true;
     
             // 根据文件路径构造一个文件实例
             File ff = new File(zipfile);
             // 判断目前文件是否存在,如果不存在,则新建一个
             if (!ff.exists()) {
                 ff.createNewFile();
             }
             // 根据文件路径构造一个文件输出流
             FileOutputStream out = new FileOutputStream(zipfile);
             // 传入文件输出流对象,创建ZIP数据输出流对象
             ZipOutputStream zipOut = new ZipOutputStream(out);
     
             // 循环待压缩的文件列表
             for (int i = 0; i < files.length; i++) {
                 File f = new File(files[i]);
                 if (!f.exists()) {
                     bf = false;
                 }
                 try {
                     // 创建文件输入流对象
                     FileInputStream in = new FileInputStream(files[i]);
                     // 得到当前文件的文件名称
                     String fileName = files[i].substring(
                             files[i].lastIndexOf('/') + 1, files[i].length());
                     // 创建指向压缩原始文件的入口
                     ZipEntry entry = new ZipEntry(fileName);
                     zipOut.putNextEntry(entry);
                     // 向压缩文件中输出数据
                     int nNumber = 0;
                     byte[] buffer = new byte[512];
                     while ((nNumber = in.read(buffer)) != -1) {
                         zipOut.write(buffer, 0, nNumber);
                     }
                     // 关闭创建的流对象
                     in.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                     bf = false;
                 }
             }
             zipOut.close();
             out.close();
             return bf;
         }
         
     }


     

    6.运行测试

    (1)在项目的src的zip目录下新建以下2个测试文件

    文件1.txt

    file2.txt

    (2)运行main方法中单个文件压缩的方法,运行结果如图:

    后台日志如下:

    生成的zip文件如下:

    (3)运行main方法中多个文件压缩的方法,运行结果如图:

    后台日志如下:

    生成的zip文件如下:

    压缩后的文件中不会出现中文乱码问题,打开多个文件压缩.zip文件中的文件1.txt,内容如下:

    采用JDK自带的类会出现中文乱码问题,效果如图:

    展开全文
  • Java压缩解压ZIP文件

    2021-03-16 06:19:54
    Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
  • 1.java生成压缩文件zip 2.怎么给压缩文件添加进度条
  • java压缩zip文件

    2010-06-21 08:51:52
    java压缩zip文件 java压缩zip文件 java压缩zip文件
  • java压缩文件zip打包

    2013-12-23 12:13:42
    应用java压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩zip
  • 学习Java压缩zip文件:压缩单个文件和多个文件,不包含文件夹;怎样用Java将文件追加到zip文件中。测试类:/** * @FileName:ZipTest.java * @Description: TODO * @Copyright: All rights Reserved, Designed By ...

    学习Java压缩zip文件:

    1. 压缩单个文件和多个文件,不包含文件夹;
    2. 怎样用Java将文件追加到zip文件中。

    测试类:

    /**
     * @FileName:ZipTest.java
     * @Description: TODO
     * @Copyright: All rights Reserved, Designed By [meter] Copyright(C) 2010-2018
     * @Company: 
     * @author:meter
     * @version: V1.0 
     * @Create:2018年5月4日 上午9:50:22
     *
     * Modification  History:
     * Date         Author        Version        Discription
     * -----------------------------------------------------------------------------------
     * 2018年5月4日      meter          1.0             1.0
     * Why & What is modified: <修改原因描述>
     */
    package org.meter.demo;
    
    import java.io.File;
    import java.io.FileFilter;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Scanner;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    
    import org.meter.zip.ZipTools;
    
    
    /**      
     * @项目名称:meter   
     * @类名称:ZipTest   
     * @类描述:   
     * @创建人:meter   
     * @创建时间:2018年5月4日 上午9:50:22   
     * @版权:Copyright@2018.All Rights Reserved    
     * @version v1.0      
     */
    public class ZipTest {
    	private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssSSSS");
    	private static ThreadPoolExecutor workerPool=new ThreadPoolExecutor(20,
    				25,
    				1,
    				TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(15),
    				new ThreadPoolExecutor.CallerRunsPolicy());
    		
    	private static void test(String path,Long size) throws Exception{
    		workerPool.allowCoreThreadTimeOut(true);// 设置超时时关闭线程
    		File dir=new File(path);
    		if(!dir.exists()){
    			System.out.println("当前路径:"+path+"不存在");
    			return;
    		}
    		System.out.println("当前路径:"+dir.getAbsolutePath());
    		File[] files =dir.listFiles(new FileFilter(){
    			@Override
    			public boolean accept(File pathname) {
    				if(pathname.getName().toLowerCase().endsWith(".zip")&&pathname.getName().toLowerCase().contains("sca_2018")){
    					return true;
    				}
    				return false;
    			}
    		});
    		long fileSize=0;
    		List<File> fileList=new ArrayList<File>();
    		String zipName="sca_"+sdf.format(new Date())+".zip";
    		int flag=files.length;
    		for(File file:files){
    			System.out.println("读取到文件:"+file.getName());
    			fileSize+=file.length();
    			fileList.add(file);
    			flag--;
    			if(fileSize>=size){
    				workerPool.execute(new InnerWorker(fileList,zipName));
    				fileSize=0;
    				fileList=new ArrayList<File>();
    				zipName="sca_"+sdf.format(new Date())+".zip";
    			} else if(flag<=0){
    				ZipTools.zipFiles(fileList,new File(zipName));
    			}
    		}
    	}
    
        
        private static class InnerWorker implements Runnable{
        	private List<File> fileList;
        	private String zipName;
        	public InnerWorker(List<File> fileList,String zipName){
        		this.fileList=fileList;
        		this.zipName=zipName;
        	}
        	
    		@Override
    		public void run() {
    			try {
    				ZipTools.zipFiles(fileList,new File(zipName));
    				System.out.println("压缩文件["+zipName+"]成功。");
    			} catch (Exception e) {
    				e.printStackTrace();
    				System.out.println("压缩失败文件:"+zipName);
    			}
    			
    		}
        	
        }
    	/** @创建日期:2018年5月4日 上午9:50:22
    	 * @作者: meter
    	 * @描述:TODO
    	 * @Title: main
    	 * @param args   
    	 * @throws Exception 
    	 */
    	public static void main(String[] args) throws Exception {
    		System.out.println("Please input the path:");
    		Scanner input = new Scanner(System.in);
    		String path=input.nextLine();
    		test(path,2147483648L);
    	}
    
    }
    

    工具类:

    /**
     * @FileName:ZipTools.java
     * @Description: TODO
     * @Copyright: All rights Reserved, Designed By [meter] Copyright(C) 2010-2018
     * @Company: 米特娱乐乐园
     * @author:meter
     * @version: V1.0 
     * @Create:2018年5月4日 上午10:25:09
     *
     * Modification  History:
     * Date         Author        Version        Discription
     * -----------------------------------------------------------------------------------
     * 2018年5月4日      meter          1.0             1.0
     * Why & What is modified: <修改原因描述>
     */
    package org.meter.zip;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    import java.util.Enumeration;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;
    
    
    
    /**
     * @项目名称:meter
     * @类名称:ZipTools 
     * @类描述:采用zip压缩文件
     * @创建人:meter
     * @创建时间:2018年5月4日 上午10:25:09
     * @版权:Copyright@2018.All Rights Reserved
     * @version v1.0
     */
    public class ZipTools {
    	/**
    	 * @创建日期:2018年5月4日 下午1:37:22
    	 * @作者: meter
    	 * @描述:压缩多个文件的情况
    	 * @Title: zip
    	 * @param fileList
    	 * @param zipFile
    	 * @throws Exception
    	 */
    	public static void zipFiles(List<File> fileList,File zipFile) throws Exception{
    		System.out.println("zipFiles待压缩文件:"+zipFile.getAbsolutePath());
    		if(fileList != null){
    			if(zipFile.exists()){//压缩文件已经存在,则只能单个添加
    				for(File file:fileList){
    					zip(zipFile,file);
    				}
    			}else{//不存在则新建
    				// 创建zip输出流
    				ZipOutputStream zipOutStream = new ZipOutputStream(new FileOutputStream(zipFile), Charset.forName("UTF-8"));
    				// 创建缓冲输出流
    				BufferedOutputStream bufferOutStream = new BufferedOutputStream(zipOutStream);
    				for(File file:fileList){
    					zipFile(file,zipOutStream,bufferOutStream);
    				}
    				//最后关闭输出流
    				bufferOutStream.close();
    				zipOutStream.close();
    			}
    			
    		}
    	}
    	/**
    	 * @创建日期:2018年5月4日 下午1:44:55
    	 * @作者: meter
    	 * @描述:执行文件压缩
    	 * @Title: zipFile
    	 * @param file
    	 * @param zipOutStream
    	 * @param bufferOutStream
    	 * @throws IOException
    	 */
    	private static void zipFile(File file,ZipOutputStream zipOutStream,BufferedOutputStream bufferOutStream) throws IOException{
    		// 创建压缩文件实体
    		ZipEntry entry = new ZipEntry(file.getName());
    		// 添加实体
    		zipOutStream.putNextEntry(entry);
    		// 创建输入流
    		BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream(file));
    		write(bufferInputStream, bufferOutStream);
    		zipOutStream.closeEntry();
    	}
    	/**
    	 * @创建日期:2018年5月4日 下午1:37:01
    	 * @作者: meter
    	 * @描述:压缩单个文件
    	 * @Title: zip
    	 * @param zipFile
    	 * @param sourceFile
    	 * @throws Exception
    	 */
    	public static void zip(File zipFile, File sourceFile) throws Exception {
    		System.out.println("待压缩文件:"+zipFile.getAbsolutePath());
    		if (zipFile.exists()) {// 添加到已经存在的压缩文件中
    			
    			File tempFile=new File(zipFile.getAbsolutePath()+".tmp");
    			// 创建zip输出流
    			ZipOutputStream zipOutStream = new ZipOutputStream(new FileOutputStream(tempFile), Charset.forName("UTF-8"));
    			// 创建缓冲输出流
    			BufferedOutputStream bufferOutStream = new BufferedOutputStream(zipOutStream);
    			ZipFile zipOutFile = new ZipFile(zipFile);
    			
    			Enumeration<? extends ZipEntry> entries = zipOutFile.entries();
    			while (entries.hasMoreElements()) {
    				ZipEntry entry = entries.nextElement();
    				System.out.println("copy: " + entry.getName());
    				zipOutStream.putNextEntry(entry);
    				if (!entry.isDirectory()) {
    					write(zipOutFile.getInputStream(entry), bufferOutStream);
    				}
    				zipOutStream.closeEntry();
    			}
    			zipOutFile.close();//记得关闭zip文件,否则后面无法删除原始文件
    			ZipEntry entry = new ZipEntry(sourceFile.getName());
    			// 添加实体
    			zipOutStream.putNextEntry(entry);
    			BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream(sourceFile));
    			write(bufferInputStream, bufferOutStream);
    			//最后关闭输出流
    			bufferOutStream.close();
    			zipOutStream.close();
    			boolean flag=zipFile.delete();
    			if(flag){
    			tempFile.renameTo(zipFile);
    			}else{
    				System.out.println("删除文件失败。");
    			}
    		} else {// 新创建压缩文件
    			// 创建zip输出流
    			ZipOutputStream zipOutStream = new ZipOutputStream(new FileOutputStream(zipFile), Charset.forName("UTF-8"));
    			// 创建缓冲输出流
    			BufferedOutputStream bufferOutStream = new BufferedOutputStream(zipOutStream);
    			// 创建压缩文件实体
    			ZipEntry entry = new ZipEntry(sourceFile.getName());
    			// 添加实体
    			zipOutStream.putNextEntry(entry);
    			// 创建输入流
    			BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream(sourceFile));
    			write(bufferInputStream, bufferOutStream);
    			//最后关闭输出流
    			bufferOutStream.close();
    			zipOutStream.close();
    		}
    		
    	}
    	/**
    	 * @创建日期:2018年5月4日 下午2:09:37
    	 * @作者: meter
    	 * @描述:读写zip文件
    	 * @Title: write
    	 * @param inputStream
    	 * @param outStream
    	 * @throws IOException
    	 */
        private static void write(InputStream inputStream,OutputStream outStream) throws IOException{
        	byte[] data=new byte[4096];
        	int length=0;
        	while((length=inputStream.read(data)) != -1){
        		outStream.write(data,0,length);
        	}
        	outStream.flush();//刷新输出流
        	inputStream.close();//关闭输入流
        }
        
        /**
         * @创建日期:2018年5月4日 下午3:07:55
         * @作者: meter
         * @描述:压缩指定目录下所有文件
         * @Title: zipDirectory
         * @param dirFile
         * @param zipFile
         * @throws IOException 
         */
        public static void zipDirectory(File dirFile,File zipFile) throws IOException{
        	if(dirFile != null && dirFile.isDirectory()){
        		if(zipFile == null){
        			zipFile=new File(dirFile.getAbsolutePath()+".zip");
        		}
        		String dirName=dirFile.getName()+File.separator;
        		// 创建zip输出流
    			ZipOutputStream zipOutStream = new ZipOutputStream(new FileOutputStream(zipFile), Charset.forName("UTF-8"));
    			// 创建缓冲输出流
    			BufferedOutputStream bufferOutStream = new BufferedOutputStream(zipOutStream);
    			dealDirFile( dirFile,dirName,bufferOutStream,zipOutStream);
    			
    			//最后关闭输出流
    			bufferOutStream.close();
    			zipOutStream.close();
        	}else{
        		System.out.println("["+dirFile.getName()+"]不是一个文件夹,或者不存在。");
        	}
        }
        /**
         * @创建日期:2018年5月4日 下午4:38:46
         * @作者: meter
         * @描述:处理目录文件
         * @Title: dealDirFile
         * @param dirFile
         * @param parentDir
         * @param bufferOutStream
         * @param zipOutStream
         * @throws IOException
         */
        private static void dealDirFile(File dirFile,String parentDir, BufferedOutputStream bufferOutStream, ZipOutputStream zipOutStream) throws IOException{
        	File[] fileList=dirFile.listFiles();
        	for(File file:fileList){
        		if(file.isFile()){
        			// 创建压缩文件实体
        			ZipEntry entry = new ZipEntry(parentDir+file.getName());
        			// 添加实体
        			zipOutStream.putNextEntry(entry);
        			// 创建输入流
        			BufferedInputStream bufferInputStream = new BufferedInputStream(new FileInputStream(file));
        			write(bufferInputStream, bufferOutStream);
        		}else{
        			dealDirFile(file,  parentDir+file.getName()+File.separator,  bufferOutStream,  zipOutStream);
        		}
        	}
        }
        /**
         * @创建日期:2018年5月4日 下午3:22:11
         * @作者: meter
         * @描述:重载zipDirectory
         * @Title: zipDirectory
         * @param dirPath
         * @param zipPath
         * @throws IOException
         */
        public static void zipDirectory(String dirPath,String zipPath) throws IOException{
        	if(zipPath==null || "".equals(zipPath)){
        		zipDirectory(new File(dirPath),null);
        	}else{
        		zipDirectory(new File(dirPath),new File(zipPath));
        	}
        }
       //------------------------------------------------米特华丽的分割线----------------------------------------------------------------------------------------
       
        /**
         * @创建日期:2018年5月4日 下午4:00:41
         * @作者: meter
         * @描述:解压文件
         * @Title: unzip
         * @param zipFile
         * @param destDir
         * @throws IOException 
         */
    	public static void unzip(File zipFile, File destDir) throws IOException {
    		ZipFile zipOutFile = new ZipFile(zipFile,Charset.forName("gbk"));
    		Enumeration<? extends ZipEntry> entries = zipOutFile.entries();
    		while (entries.hasMoreElements()) {
    			ZipEntry entry = entries.nextElement();
    			if(entry.isDirectory()){
    				File tempFile = new File(destDir.getAbsolutePath()+File.separator+entry.getName());
    				if (!tempFile.exists()) {
    					tempFile.mkdirs();
    				}
    			}else{
    				File tempFile=new File(destDir.getAbsolutePath()+File.separator+entry.getName());
    				checkParentDir(tempFile);
    				FileOutputStream fileOutStream=new FileOutputStream(tempFile);
    				BufferedOutputStream bufferOutStream = new BufferedOutputStream(fileOutStream);
    				write(zipOutFile.getInputStream(entry),bufferOutStream);
    				bufferOutStream.close();
    				fileOutStream.close();
    			}
    		}
    		zipOutFile.close();//记得关闭zip文件
    	}
    	
    	/**
    	 * @创建日期:2018年5月4日 下午4:37:41
    	 * @作者: meter
    	 * @描述:验证父目录是否存在,否则创建
    	 * @Title: checkParentDir
    	 * @param file
    	 */
    	private static void checkParentDir(File file){
    		if(!file.getParentFile().exists()){
    			file.getParentFile().mkdirs();
    		}
    	}
    	
    }
    


    展开全文
  • Java压缩和解压缩zip文件

    千次阅读 2019-08-05 15:21:47
    介绍 Java提供的java.util.zip包只支持zip和gzip。至于更多格式的压缩可以选择apache的Commons Compress。 ...参考:...读取zip文件列表 package com.dylan.ja...

    介绍

    Java提供的java.util.zip包只支持zip和gzip。至于更多格式的压缩可以选择apache的Commons Compress。

     

    参考:https://o7planning.org/en/10195/java-compression-and-decompression-tutorial

     

    读取zip文件列表

    package com.dylan.javacore.compress;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    /**
     * @Description: 列出压缩包中的文件结构
     * @Author laoxu
     * @Date 2019/8/5 10:01
     **/
    public class ListZipEntriesDemo {
        public static void main(String[] args) {
            String FILE_PATH="D:/test/data.zip";
    
            ZipInputStream zipls = null;
    
            try {
                zipls = new ZipInputStream(new FileInputStream(FILE_PATH), Charset.forName("GBK"));
                ZipEntry entry = null;
                while ((entry=zipls.getNextEntry())!=null){
                    if(entry.isDirectory()){
                        System.out.print("Directory:");
                    }else{
                        System.out.print("File:");
                    }
                    System.out.println(entry.getName());
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(zipls!=null){
                    try {
                        zipls.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
        }
    }

     

    输出:

     

    解压zip到指定目录

    package com.dylan.javacore.compress;
    
    import java.io.*;
    import java.nio.charset.Charset;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    /**
     * @Description: 解压zip
     * @Author laoxu
     * @Date 2019/8/5 13:50
     **/
    public class UnZipDemo {
        public static void main(String[] args) {
            final String OUTPUT_FOLDER="d:/test/output";
            String FILE_PATH="d:/test/data.zip";
    
            // 判断文件夹是否存在
            File folder = new File(OUTPUT_FOLDER);
            if(!folder.exists()){
                folder.mkdir();
            }
    
            // 创建buffer
            byte[] buffer = new byte[1024];
            ZipInputStream zipls = null;
    
            try {
                zipls = new ZipInputStream(new FileInputStream(FILE_PATH), Charset.forName("GBK"));
                ZipEntry entry = null;
                while ((entry=zipls.getNextEntry())!=null){
                    String entryName = entry.getName();
                    String outFileName = OUTPUT_FOLDER + File.separator + entryName;
                    System.out.println("Unzip: " + outFileName);
    
                    if(entry.isDirectory()){
                        new File(outFileName).mkdirs();
                    }else{
                        FileOutputStream fos = new FileOutputStream(outFileName);
                        int len;
                        while ((len = zipls.read(buffer))>0){
                            fos.write(buffer,0,len);
                        }
                        fos.close();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    zipls.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }

     

    压缩文件夹

     

    package com.dylan.javacore.compress;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * @Description: 压缩文件夹
     * @Author laoxu
     * @Date 2019/8/5 15:25
     **/
    public class ZipDirectory {
    
        public ZipDirectory() {
    
        }
    
        // A method to Compress a directory.
        public void zipDirectory(File inputDir, File outputZipFile) {
            // Create parent directory for the output file.
            outputZipFile.getParentFile().mkdirs();
    
            String inputDirPath = inputDir.getAbsolutePath();
            byte[] buffer = new byte[1024];
    
            FileOutputStream fileOs = null;
            ZipOutputStream zipOs = null;
            try {
    
                List<File> allFiles = this.listChildFiles(inputDir);
    
                // Create ZipOutputStream object to write to the zip file
                fileOs = new FileOutputStream(outputZipFile);
                //
                zipOs = new ZipOutputStream(fileOs, Charset.forName("GBK"));
                for (File file : allFiles) {
                    String filePath = file.getAbsolutePath();
    
                    System.out.println("Zipping " + filePath);
                    // entryName: là một đường dẫn tương đối.
                    String entryName = filePath.substring(inputDirPath.length() + 1);
    
                    ZipEntry ze = new ZipEntry(entryName);
                    // Put new entry into zip file.
                    zipOs.putNextEntry(ze);
                    // Read the file and write to ZipOutputStream.
                    FileInputStream fileIs = new FileInputStream(filePath);
    
                    int len;
                    while ((len = fileIs.read(buffer)) > 0) {
                        zipOs.write(buffer, 0, len);
                    }
                    fileIs.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                closeQuite(zipOs);
                closeQuite(fileOs);
            }
    
        }
    
        private void closeQuite(OutputStream out) {
            try {
                out.close();
            } catch (Exception e) {
            }
        }
    
        // This method returns the list of files,
        // including the children, grandchildren files of the input folder.
        private List<File> listChildFiles(File dir) throws IOException {
            List<File> allFiles = new ArrayList<File>();
    
            File[] childFiles = dir.listFiles();
            for (File file : childFiles) {
                if (file.isFile()) {
                    allFiles.add(file);
                } else {
                    List<File> files = this.listChildFiles(file);
                    allFiles.addAll(files);
                }
            }
            return allFiles;
        }
    
        public static void main(String[] args) {
            ZipDirectory zipDir = new ZipDirectory();
    
            File inputDir = new File("D:/test/output");
            File outputZipFile = new File("D:/test/output/datas.zip");
    
            zipDir.zipDirectory(inputDir, outputZipFile);
    
        }
    }

     

    下一篇讲Common Compress

     

    展开全文
  • 本系统运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩...
  • java 压缩和解压缩zip文件 有测试类,可以直接测试。效果还不错,现网已经运行好长时间了
  • zip 压缩 文件 Java

    2010-08-17 14:59:59
    zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java
  • 废了几个小时时间整java压缩zip这玩意,总算写出来了,呵呵,希望对看到朋友有用! 用到了ant.jar来解决压缩中的中文乱码问题。 package unzip; import java.io.BufferedInputStream; import java.io.B

    废了几个小时时间整java解压缩zip这玩意,总算写出来了,呵呵,希望对看到朋友有用!

    用到了ant.jar来解决压缩中的中文乱码问题。

    package unzip;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;
     
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    import org.apache.tools.zip.ZipOutputStream;
     
    /**
      * 功能: 1 、实现把指定文件夹下的所有文件压缩为指定文件夹下指定 zip 文件 2 、实现把指定文件夹下的 zip 文件解压到指定目录下
      *
      * @author ffshi
      *
      */
    public class ZipUtils {
     
        public static void main(String[] args) {
     
           // 把 E 盘正则表达式文件夹下的所有文件压缩到 E 盘 stu 目录下,压缩后的文件名保存为 正则表达式 .zip
           // zip ("E:// 正则表达式 ", "E://stu // 正则表达式 .zip ");
           // 把 E 盘 stu 目录下的正则表达式 .zip 压缩文件内的所有文件解压到 E 盘 stu 目录下面
           unZip ( "E://stu// 正则表达式 .zip" , "E://stu" );
     
        }
     
        /**
          * 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件 create date:2009- 6- 9
          * author:Administrator
          *
          * @param sourceDir
          *             E:// 我的备份
          * @param zipFile
          *             格式: E://stu //zipFile.zip 注意:加入 zipFile 我们传入的字符串值是
          *             : "E://stu //" 或者 "E://stu "
          *             如果 E 盘已经存在 stu 这个文件夹的话,那么就会出现 java.io.FileNotFoundException: E:/stu
          *             ( 拒绝访问。 ) 这个异常,所以要注意正确传参调用本函数哦
          *
          */
        public static void zip(String sourceDir, String zipFile) {
           OutputStream os;
           try {
               os = new FileOutputStream(zipFile);
               BufferedOutputStream bos = new BufferedOutputStream(os);
               ZipOutputStream zos = new ZipOutputStream(bos);
     
               File file = new File(sourceDir);
     
               String basePath = null ;
               if (file.isDirectory()) {
                  basePath = file.getPath();
               } else {
                  basePath = file.getParent();
               }
     
               zipFile (file, basePath, zos);
     
               zos.closeEntry();
               zos.close();
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
        /**
          *
          * create date:2009- 6- 9 author:Administrator
          *
          * @param source
          * @param basePath
          * @param zos
          * @throws IOException
          */
        private static void zipFile(File source, String basePath,
               ZipOutputStream zos) {
           File[] files = new File[0];
     
           if (source.isDirectory()) {
               files = source.listFiles();
           } else {
               files = new File[1];
               files[0] = source;
           }
     
           String pathName;
           byte [] buf = new byte [1024];
           int length = 0;
           try {
               for (File file : files) {
                  if (file.isDirectory()) {
                      pathName = file.getPath().substring(basePath.length() + 1)
                             + "/" ;
                      zos.putNextEntry( new ZipEntry(pathName));
                      zipFile (file, basePath, zos);
                  } else {
                      pathName = file.getPath().substring(basePath.length() + 1);
                      InputStream is = new FileInputStream(file);
                      BufferedInputStream bis = new BufferedInputStream(is);
                      zos.putNextEntry( new ZipEntry(pathName));
                      while ((length = bis.read(buf)) > 0) {
                         zos.write(buf, 0, length);
                      }
                      is.close();
                  }
               }
           } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
        /**
          * 解压 zip 文件,注意不能解压 rar 文件哦,只能解压 zip 文件 解压 rar 文件 会出现 java.io.IOException: Negative
          * seek offset 异常 create date:2009- 6- 9 author:Administrator
          *
          * @param zipfile
          *             zip 文件,注意要是正宗的 zip 文件哦,不能是把 rar 的直接改为 zip 这样会出现 java.io.IOException:
          *             Negative seek offset 异常
          * @param destDir
          * @throws IOException
          */
        public static void unZip(String zipfile, String destDir) {
     
           destDir = destDir.endsWith( "//" ) ? destDir : destDir + "//" ;
           byte b[] = new byte [1024];
           int length;
     
           ZipFile zipFile;
           try {
               zipFile = new ZipFile( new File(zipfile));
               Enumeration enumeration = zipFile.getEntries();
               ZipEntry zipEntry = null ;
     
               while (enumeration.hasMoreElements()) {
                  zipEntry = (ZipEntry) enumeration.nextElement();
                  File loadFile = new File(destDir + zipEntry.getName());
     
                  if (zipEntry.isDirectory()) {
                      // 这段都可以不要,因为每次都貌似从最底层开始遍历的
                      loadFile.mkdirs();
                  } else {
                      if (!loadFile.getParentFile().exists())
                         loadFile.getParentFile().mkdirs();
     
                      OutputStream outputStream = new FileOutputStream(loadFile);
                      InputStream inputStream = zipFile.getInputStream(zipEntry);
     
                      while ((length = inputStream.read(b)) > 0)
                         outputStream.write(b, 0, length);
     
                  }
               }
               System. out .println( " 文件解压成功 " );
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
     
        }
     
    }

    也顺便网上查了下rar格式与zip格式有什么区别:

    区别一、zip的安装比较大,并仅仅有英文版+汉化包 
    rar有官方的简体中文版,并且安装很小,不足一兆 
    区别二、winrar的压缩率较高,而zip的压缩率更低 
    区别三、zip支持的格式很多,但已经较老,不大流行 
    rar支持格式也很多,并且还是流行的 
    区别四、zip仅仅能够压缩成zip格式,不能解压rar格式;rar不仅有自己的格式,还可以压缩成zip格式并解压zip格式 
    区别五、zip的界面没有rar漂亮 
    区别六、winrar支持分卷压缩,zip不支持 
    区别七、国外很多都采用zip,因为它是免费的,rar不是免费的,在国内很流行是由于有盗版的存在;zip不能兼容rar,是因为这样必须付出一笔费用 
    
    
    WinRAR 可以创建两种不同的压缩文件格式: RAR 和 ZIP 
    ZIP 压缩文件 
    
    在 ZIP 文件的最大优点就是普及率。比如说,大部分在 Internet 的压缩文件都是 ZIP 压缩文件,所以如果你要传送压缩文件给某一个人,但你无法确定你的收件人是否有 WinRAR 来解压压缩文件的内容时,使用 ZIP 格式是个好推荐。要不然你也可以发送 自解压文件。此类的压缩文件稍微大了一点点,但不需要任何的外部程序便可以解压。 
    
    另一个 ZIP 的优点便是速度。 ZIP 压缩文件通常在创建时会比 RAR 快一些。 
    
    RAR 压缩文件 
    
    RAR 格式比 ZIP 更能够提供较好的压缩率,特别是在 固实模式 时。另外一个 RAR 的重要功能是支持 多卷 压缩文件。它们比起 ZIP 的“跨磁盘”压缩文件更加便利和简易。 WinRAR 不支持 ZIP 的磁盘拆分,如果你要创建分卷压缩文件,请使用 RAR 的分卷压缩来代替。 
    
    RAR 格式也有一些在 ZIP 中所缺乏的重要功能,例如 恢复记录,它允许物理受损数据的恢复,还能 锁定 重要的压缩文件,以防止它们被别人意外地更改。 
    
    RAR 格式可以管理的文件大小几乎是无限制的 (最大到 8,589,934,591 GB) ,而在 ZIP 压缩文件的单个文件的最大值为 4 GB。需注意的是,旧式的文件

    展开全文
  • 主要介绍了java压缩zip文件中文乱码问题的解决方法,需要的朋友可以参考下
  • java 生成zip压缩文件

    热门讨论 2010-06-21 08:51:27
    java 生成zip压缩文件 java 生成zip压缩文件
  • Java文件压缩zip

    2013-05-10 10:06:00
    Java文件压缩zip,粘贴在项目中即可使用
  • 主要为大家详细介绍了java实现文件压缩zip的工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java 文件zip 压缩与解压 可以直接调用
  • 本文主要介绍java压缩和解压缩Zip、Jar、Gzip文件的知识,这里整理了相关资料,并附示例代码有兴趣的小伙伴可以参考下
  • JAVA实现解压缩ZIP格式的压缩文件(含中文名文件)的完整DEMO,含用到的JAR包。
  • java解压zip压缩文件

    2013-02-24 16:39:48
    java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
  • Java压缩zip - 解压缩多个文件或文件夹

    万次阅读 多人点赞 2012-09-19 12:56:50
    Java压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip...
  • Java压缩文件,并以ZIP格式压缩文件,主要是使用java.util.zip 包中的类来实现解压、压缩文件功能,如果你对这个类并不太熟悉,你正好可以参考一下这个类是如何用的。
  • java压缩zip文件解决中文乱码问题

    热门讨论 2010-11-02 15:45:04
    java压缩文件zip实现无乱码 内置类与jar包
  • java压缩和解压缩Zip、Jar、Gzip文件

    千次阅读 2017-06-20 09:13:51
    java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP、JAR、GZIP等形式,GZIP主要是在Linux系统下的压缩文件。下面主要讲的就是ZIP形式的压缩文件,而JAR、GZIP形式的压缩文件...
  • Java压缩zip - 多个文件(包括文件夹),对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。压缩方法使用的是可变参数,可以压缩1到多个文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,761
精华内容 33,104
关键字:

java压缩文件zip

java 订阅