<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-153  評論-235  文章-19  trackbacks-0

          用java好久了,還沒有寫個壓縮文件的示例,昨晚弄了下,把寫下來,以后可以看。

    關系到
    java.util.zip.ZipEntry
    java.util.zip.ZipOutputStream

    如果要解決中文文件名問題,用到ant.jar

    這兩個類。

    ZipOutputStream.putNextEntry(ZipEntry);就可以了,然后ZipOutputStream.wirte();就得了。

    package net.blogjava.chenlb.zip;

    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    //import java.util.zip.ZipEntry;
    //import java.util.zip.ZipOutputStream;
    //用ant.jar的zip.*可以解決中文文件名問題
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipOutputStream;

    /**
     * 壓縮文件.
     * 2007-10-17 下午11:19:50
     * 
    @author chenlb
     
    */
    public class RecursiveZip {

        
        
    public static void main(String[] args) {

            RecursiveZip recursiveZip 
    = new RecursiveZip();
            System.out.println(
    "====開始====");
            
    try {
                OutputStream os 
    = new FileOutputStream("e:/doc-recursive.zip");
                BufferedOutputStream bs 
    = new BufferedOutputStream(os);
                ZipOutputStream zo 
    = new ZipOutputStream(bs);
                
                
    //recursiveZip.zip("e:/recursive-zip/中文文件名.txt", new File("e:/recursive-zip"), zo, true, true);
                recursiveZip.zip("e:/recursive-zip"new File("e:/recursive-zip"), zo, truetrue);
                
                zo.closeEntry();
                zo.close();
            } 
    catch (FileNotFoundException e) {
                e.printStackTrace();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println(
    "====完成====");
        }

        
    /**
         * 
    @param path 要壓縮的路徑, 可以是目錄, 也可以是文件.
         * 
    @param basePath 如果path是目錄,它一般為new File(path), 作用是:使輸出的zip文件以此目錄為根目錄, 如果為null它只壓縮文件, 不解壓目錄.
         * 
    @param zo 壓縮輸出流
         * 
    @param isRecursive 是否遞歸
         * 
    @param isOutBlankDir 是否輸出空目錄, 要使輸出空目錄為true,同時baseFile不為null.
         * 
    @throws IOException
         
    */
        
    public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {
            
            File inFile 
    = new File(path);

            File[] files 
    = new File[0];
            
    if(inFile.isDirectory()) {    //是目錄
                files = inFile.listFiles();
            } 
    else if(inFile.isFile()) {    //是文件
                files = new File[1];
                files[
    0= inFile;
            }
            
    byte[] buf = new byte[1024];
            
    int len;
            
    //System.out.println("baseFile: "+baseFile.getPath());
            for(int i=0; i<files.length; i++) {
                String pathName 
    = "";
                
    if(basePath != null) {
                    
    if(basePath.isDirectory()) {
                        pathName 
    = files[i].getPath().substring(basePath.getPath().length()+1);
                    } 
    else {//文件
                        pathName = files[i].getPath().substring(basePath.getParent().length()+1);
                    }
                } 
    else {
                    pathName 
    = files[i].getName();
                }
                System.out.println(pathName);
                
    if(files[i].isDirectory()) {
                    
    if(isOutBlankDir && basePath != null) {    
                        zo.putNextEntry(
    new ZipEntry(pathName+"/"));    //可以使空目錄也放進去
                    }
                    
    if(isRecursive) {    //遞歸
                        zip(files[i].getPath(), basePath, zo, isRecursive, isOutBlankDir);
                    }
                } 
    else {
                    FileInputStream fin 
    = new FileInputStream(files[i]);
                    zo.putNextEntry(
    new ZipEntry(pathName));
                    
    while((len=fin.read(buf))>0) {
                        zo.write(buf,
    0,len);
                    }
                    fin.close();
                }
            }
        }
    }


    posted on 2007-10-18 13:53 流浪汗 閱讀(3030) 評論(3)  編輯  收藏 所屬分類: JAVA/J2EE

    評論:
    # re: java 壓縮目錄為 zip 2008-09-24 16:59 | ZERO-H
    看了,寫得很好,:)  回復  更多評論
      
    # re: java 壓縮目錄為 zip 2009-02-16 09:16 | 方正
    這個是服務器端的,沒什么意義  回復  更多評論
      
    # re: java 壓縮目錄為 zip [未登錄] 2009-09-27 10:14 | John
    水喔~ 剛好用到 . 謝謝  回復  更多評論
      
    主站蜘蛛池模板: 亚洲免费中文字幕| 日韩亚洲Av人人夜夜澡人人爽 | 成年女人18级毛片毛片免费| 久热综合在线亚洲精品| a在线视频免费观看| 亚洲国产精品成人精品无码区 | 国产激情免费视频在线观看| 亚洲成A人片在线观看WWW| 国色精品va在线观看免费视频| 亚洲综合熟女久久久30p| 国产一级一毛免费黄片| 国精无码欧精品亚洲一区| 麻豆精品不卡国产免费看| 日韩亚洲Av人人夜夜澡人人爽| 91免费人成网站在线观看18| 亚洲欧洲日产国产最新| 妞干网在线免费视频| 美女视频黄视大全视频免费的| 亚洲日韩在线观看免费视频| 99精品视频在线观看免费| 亚洲综合一区二区精品久久| 国产福利在线观看免费第一福利| 亚洲熟妇无码av另类vr影视| 亚洲成人一区二区| 永久免费不卡在线观看黄网站| 亚洲伊人久久大香线蕉苏妲己| 欧美好看的免费电影在线观看| 亚洲av无码成人精品国产| 夜夜春亚洲嫩草影院| 亚洲精品无码专区在线| 光棍天堂免费手机观看在线观看 | 精品一区二区三区免费毛片| 色www永久免费网站| 午夜精品免费在线观看| 国产V亚洲V天堂无码| 久久精品无码专区免费青青| 中文字幕精品亚洲无线码一区 | 免费看男女下面日出水视频| 最近国语视频在线观看免费播放| 91亚洲国产成人精品下载| 性感美女视频免费网站午夜 |