悟心

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。 上人生的旅途罢。前途很远,也很暗。然而不要怕。不怕的人的面前才有路。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  93 随笔 :: 1 文章 :: 103 评论 :: 0 Trackbacks
package com.cn;  
  
import java.io.BufferedInputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.util.zip.CRC32;  
import java.util.zip.CheckedOutputStream;  
import java.util.zip.ZipEntry;  
import java.util.zip.ZipOutputStream;  
  
public class ZipCompressor {   
      
    
static final int BUFFER = 8192;  
  
    
private File zipFile;  
  
    
public ZipCompressor(String pathName) {   
            zipFile 
= new File(pathName);   
    }  
  
    
public void compress(String srcPathName) {   
        File file 
= new File(srcPathName);   
        
if (!file.exists())   
            
throw new RuntimeException(srcPathName + "不存在!");   
        
try {   
            FileOutputStream fileOutputStream 
= new FileOutputStream(zipFile);   
            CheckedOutputStream cos 
= new CheckedOutputStream(fileOutputStream,   
                    
new CRC32());   
            ZipOutputStream out 
= new ZipOutputStream(cos);   
            String basedir 
= "";   
            compress(file, out, basedir);   
            out.close();   
        } 
catch (Exception e) {   
            
throw new RuntimeException(e);   
        }   
    }  
  
    
private void compress(File file, ZipOutputStream out, String basedir) {   
        
/* 判断是目录还是文件 */   
        
if (file.isDirectory()) {   
            System.out.println(
"压缩:" + basedir + file.getName());   
            
this.compressDirectory(file, out, basedir);   
        } 
else {   
            System.out.println(
"压缩:" + basedir + file.getName());   
            
this.compressFile(file, out, basedir);   
        }   
    }  
  
    
/** 压缩一个目录 */   
    
private void compressDirectory(File dir, ZipOutputStream out, String basedir) {   
        
if (!dir.exists())   
            
return;  
  
        File[] files 
= dir.listFiles();   
        
for (int i = 0; i < files.length; i++) {   
            
/* 递归 */   
            compress(files[i], out, basedir 
+ dir.getName() + "/");   
        }   
    }  
  
    
/** 压缩一个文件 */   
    
private void compressFile(File file, ZipOutputStream out, String basedir) {   
        
if (!file.exists()) {   
            
return;   
        }   
        
try {   
            BufferedInputStream bis 
= new BufferedInputStream(   
                    
new FileInputStream(file));   
            ZipEntry entry 
= new ZipEntry(basedir + file.getName());   
            out.putNextEntry(entry);   
            
int count;   
            
byte data[] = new byte[BUFFER];   
            
while ((count = bis.read(data, 0, BUFFER)) != -1) {   
                out.write(data, 
0, count);   
            }   
            bis.close();   
        } 
catch (Exception e) {   
            
throw new RuntimeException(e);   
        }   
    }   
      
    
/**測試是否可以壓縮*/  
    
public static void main(String[] args) {   
        ZipCompressor zc 
= new ZipCompressor("E:\\szhzip.zip");   
        zc.compress(
"E:\\test");   
        System.out.println(
"OK.");  
    }  
}   
posted on 2010-11-25 16:07 艾波 阅读(355) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: