文件的压缩和解压

  1. //文件名:myZip.java   
  2. import java.io.*;   
  3. import java.util.*;   
  4. import java.util.zip.*;   
  5. /**  
  6.  *  Title: 文件压缩和解压 
  7.  *  Description: 使用ZipInputStream和ZipOutputStream对文件  
  8.  *                 和目录进行压缩和解压处理
  9.  *  Copyright: Copyright (c) 2003 
  10.  *  Filename: myZip.java 
  11.  * @version 1.0  
  12.  */  
  13. public class myZip{   
  14. /**  
  15.  *方法说明:实现文件的压缩处理  
  16.  *输入参数:String[] fs 压缩的文件数组  
  17.  *返回类型:  
  18.  */  
  19.   public void ZipFiles(String[] fs){   
  20.    try{   
  21.      String fileName = fs[0];   
  22.      FileOutputStream f =   
  23.        new FileOutputStream(fileName+".zip");   
  24.      //使用输出流检查   
  25.      CheckedOutputStream cs =    
  26.         new CheckedOutputStream(f,new Adler32());   
  27.       //声明输出zip流   
  28.       ZipOutputStream out =   
  29.         new ZipOutputStream(new BufferedOutputStream(cs));   
  30.       //写一个注释   
  31.       out.setComment("A test of Java Zipping");   
  32.       //对多文件进行压缩   
  33.       for(int i=1;i
  34.         System.out.println("Write file "+fs[i]);   
  35.         BufferedReader in =   
  36.            new BufferedReader(   
  37.              new FileReader(fs[i]));   
  38.          out.putNextEntry(new ZipEntry(fs[i]));   
  39.          int c;   
  40.          while((c=in.read())!=-1)   
  41.           out.write(c);   
  42.         in.close();   
  43.        }   
  44.        //关闭输出流   
  45.        out.close();   
  46.        System.out.println("Checksum::"+cs.getChecksum().getValue());   
  47.     }catch(Exception e){   
  48.        System.err.println(e);   
  49.     }   
  50.   }   
  51.   
  52.     
  53.   
  54. /**  
  55.  *方法说明:解压缩Zip文件  
  56.  *输入参数:String fileName 解压zip文件名  
  57.  *返回类型:  
  58.  */  
  59.   public void unZipFile(String fileName){   
  60.     try{   
  61.        System.out.println("读取ZIP文件........");   
  62.        //文件输入流   
  63.        FileInputStream fi =   
  64.          new FileInputStream(fileName+".zip");   
  65.        //输入流检查   
  66.        CheckedInputStream csi = new CheckedInputStream(fi,new Adler32());   
  67.        //输入流压缩   
  68.        ZipInputStream in2 =   
  69.          new ZipInputStream(   
  70.            new BufferedInputStream(csi));   
  71.        ZipEntry ze;   
  72.        System.out.println("Checksum::"+csi.getChecksum().getValue());   
  73.        //解压全部文件   
  74.        while((ze = in2.getNextEntry())!=null){   
  75.          System.out.println("Reading file "+ze);   
  76.          int x;   
  77.          while((x= in2.read())!=-1)   
  78.            //这里是写文件,write是以byte方式输出。   
  79.            System.out.write(x);   
  80.        }   
  81.        in2.close();   
  82.     }catch(Exception e){   
  83.       System.err.println(e);   
  84.     }   
  85.   }   
  86. /**  
  87.  *方法说明:读取Zip文件列表  
  88.  *输入参数:String fileName zip文件名  
  89.  *返回类型:Vector 文件列表  
  90.  */  
  91.   public Vector listFile(String fileName){   
  92.     try{   
  93.        String[] aRst=null;   
  94.        Vector vTemp = new Vector();   
  95.        //zip文件对象   
  96.        ZipFile zf = new ZipFile(fileName+".zip");   
  97.        Enumeration e = zf.entries();   
  98.        while(e.hasMoreElements()){   
  99.          ZipEntry ze2 = (ZipEntry)e.nextElement();   
  100.          System.out.println("File: "+ze2);   
  101.          vTemp.addElement(ze2);   
  102.        }   
  103.        return  vTemp;   
  104.     }catch(Exception e){   
  105.       System.err.println(e);   
  106.       return null;   
  107.     }   
  108.   }   
  109. /**  
  110.  *方法说明:主方法  
  111.  *输入参数:  
  112.  *返回类型:  
  113.  */  
  114.   public static void main(String[] args){   
  115.     try{   
  116.      String fileName = args[0];   
  117.      myZip myZip = new myZip();   
  118.      myZip.ZipFiles(args);   
  119.      myZip.unZipFile(fileName);   
  120.      Vector dd = myZip.listFile(fileName);   
  121.      System.out.println("File List: "+dd);   
  122.     }catch(Exception e){   
  123.      e.printStackTrace();   
  124.     }   
  125.   }   
  126. }   

你可能感兴趣的:(文件的压缩和解压)