//文件名从Args[]从得到:如当前目录有:fog1.txt和fog2.txt
//那在运行时输入Args参数:fog1.txt fog2.txt
//压缩成zip.rar,之后再从zip.rar读出来
import java.io.*;
import java.util.*;
import java.util.zip.*;public class ZipCompress {  
  public static void main(String[] args) 
  throws IOException {
   //Zip
    FileOutputStream f = 
     new FileOutputStream("zip.rar");
    CheckedOutputStream chos = 
     new CheckedOutputStream(f, new Adler32());
    ZipOutputStream zop = new ZipOutputStream(chos);
    for(int i = 0; i < args.length; i++){
     zop.putNextEntry(new ZipEntry(args[i]));
     FileInputStream fs = 
     new  FileInputStream(args[i]);
     BufferedInputStream bf = 
     new BufferedInputStream(fs);
     int temp;
     while((temp = bf.read()) != -1){
     zop.write(temp);
     }
    }
    zop.close();
    
    
    //UNZip         
    CheckedInputStream ck = new CheckedInputStream(
     new BufferedInputStream(
     new FileInputStream("zip.rar")), 
     new Adler32());
    ZipInputStream zis = new ZipInputStream(ck);
         
    ZipEntry ze = zis.getNextEntry();
    while(ze != null){
     System.out.println(ze);
     FileWriter fw = new FileWriter("backup_" + ze.getName());
     BufferedWriter bw = new BufferedWriter(fw);
    
     int temp = 0;
     while((temp = (int)zis.read()) != -1){
     bw.write(temp);
     //System.out.write(temp);
     }
     bw.close();
     ze = zis.getNextEntry();
    }
    zis.close();
    ck.close();
}
}