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

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

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

    隨筆-46  評論-54  文章-0  trackbacks-0

    Java多層目錄打包和解壓代碼(apache commons compress, io, lang)

     

    package zip;

     

    import java.io.BufferedOutputStream;

    import java.io.ByteArrayOutputStream;

    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.Enumeration;

    import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;

    import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;

    import org.apache.commons.compress.archivers.zip.ZipFile;

    import org.apache.commons.io.FileUtils;

    import org.apache.commons.io.IOUtils;

    import org.apache.commons.lang.StringUtils;

     

    public class Main {

     

        public static void main(String[] args) throws FileNotFoundException, Exception {

            Main main = new Main("c:/test1.zip");

            main.createZipOut();

            main.packToolFiles("C:/test", "");

            main.closeZipOut();

     

            main = new Main("c:/test2.zip");

            main.createZipOut();

            main.packToolFiles("C:/test", "test");

            main.closeZipOut();

     

            Main.unZipToFolder("c:/test1.zip", "c:/test1");

            

            Main.unZipToFolder("c:/test2.zip", "c:/test2");

        }

        private OutputStream out = null;

        private BufferedOutputStream bos = null;

        private ZipArchiveOutputStream zaos = null;

        private String zipFileName = null;

     

        public Main(String zipname) {

            this.zipFileName = zipname;

        }

     

        public void createZipOut() throws FileNotFoundException, IOException {

            File f = new File(zipFileName);

            out = new FileOutputStream(f);

            bos = new BufferedOutputStream(out);

            zaos = new ZipArchiveOutputStream(bos);

            zaos.setEncoding("GBK");

     

        }

     

        public void closeZipOut() throws Exception {

            zaos.flush();

            zaos.close();

     

            bos.flush();

            bos.close();

     

            out.flush();

            out.close();

        }

     

        /**

         * 把一個目錄打包到zip文件中的某目錄

         * @param dirpath   目錄絕對地址

         * @param pathName  zip中目錄

         */

        public void packToolFiles(String dirpath, String pathName) throws FileNotFoundException, IOException {

            if (StringUtils.isNotEmpty(pathName)) {

                pathName = pathName + File.separator;

            }

            packToolFiles(zaos, dirpath, pathName);

        }

     

        /**

         * 把一個目錄打包到一個指定的zip文件中

         * @param dirpath           目錄絕對地址

         * @param pathName       zip文件抽象地址

         */

        public void packToolFiles(ZipArchiveOutputStream zaos, String dirpath, String pathName) throws FileNotFoundException, IOException {

     

            ByteArrayOutputStream tempbaos = new ByteArrayOutputStream();

            BufferedOutputStream tempbos = new BufferedOutputStream(tempbaos);

     

            File dir = new File(dirpath);

            //返回此絕對路徑下的文件

            File[] files = dir.listFiles();

            if (files == null || files.length < 1) {

                return;

            }

            for (int i = 0; i < files.length; i++) {

                //判斷此文件是否是一個文件夾

                if (files[i].isDirectory()) {

                    packToolFiles(zaos, files[i].getAbsolutePath(), pathName + files[i].getName() + File.separator);

                } else {

                    zaos.putArchiveEntry(new ZipArchiveEntry(pathName + files[i].getName()));

                    IOUtils.copy(new FileInputStream(files[i].getAbsolutePath()), zaos);

                    zaos.closeArchiveEntry();

     

                }

     

            }

     

            tempbaos.flush();

            tempbaos.close();

     

            tempbos.flush();

            tempbos.close();

        }

     

        /**

         * 把一個zip文件解壓到一個指定的目錄中

         * @param zipfilename   zip文件抽象地址

         * @param outputdir     目錄絕對地址

         */

        public static void unZipToFolder(String zipfilename, String outputdir) throws IOException {

            File zipfile = new File(zipfilename);

            if (zipfile.exists()) {

                outputdir = outputdir + File.separator;

                FileUtils.forceMkdir(new File(outputdir));

     

                ZipFile zf = new ZipFile(zipfile, "GBK");

                Enumeration zipArchiveEntrys = zf.getEntries();

                while (zipArchiveEntrys.hasMoreElements()) {

                    ZipArchiveEntry zipArchiveEntry = (ZipArchiveEntry) zipArchiveEntrys.nextElement();

                    if (zipArchiveEntry.isDirectory()) {

                        FileUtils.forceMkdir(new File(outputdir + zipArchiveEntry.getName() + File.separator));

                    } else {

                        IOUtils.copy(zf.getInputStream(zipArchiveEntry), FileUtils.openOutputStream(new File(outputdir + zipArchiveEntry.getName())));

                    }

                }

            } else {

                throw new IOException("指定的解壓文件不存在:\t" + zipfilename);

            }

        }

    }

     

     

    本文地址:http://docs.google.com/View?id=ajfmzbdvh8wz_60g2dhfkgg

     

    posted on 2009-11-12 22:53 rox 閱讀(3995) 評論(1)  編輯  收藏 所屬分類: Java

    評論:
    # re: Java多層目錄打包和解壓代碼(apache commons compress, io, lang)[未登錄] 2014-07-23 17:06 | s
    qwqw  回復  更多評論
      
    主站蜘蛛池模板: 亚洲精品动漫在线| 亚洲愉拍99热成人精品热久久| 久久久久亚洲AV无码麻豆| 人妻在线日韩免费视频| 激情97综合亚洲色婷婷五| 中文字幕免费观看视频| 亚洲中文字幕第一页在线| 黄网站色视频免费在线观看的a站最新| 美腿丝袜亚洲综合| 国产一区二区三区免费| 亚洲gv猛男gv无码男同短文| 久久久久久免费一区二区三区 | 免费一级肉体全黄毛片| 国产精品亚洲综合天堂夜夜| 国产一级高清视频免费看| 久久精品国产亚洲AV天海翼| 免费在线观看中文字幕| 91在线视频免费观看| 91大神亚洲影视在线| 成熟女人牲交片免费观看视频| 美国免费高清一级毛片| 亚洲欭美日韩颜射在线二| 99热这里有免费国产精品| 亚洲国产日韩在线人成下载| 午夜高清免费在线观看| 一级毛片在播放免费| 久久久亚洲欧洲日产国码aⅴ| 免费不卡视频一卡二卡| 国产在亚洲线视频观看| 国产亚洲成av片在线观看| 99久久99久久精品免费看蜜桃| 亚洲乱码国产乱码精华| 久久精品夜色噜噜亚洲A∨| 少妇人妻偷人精品免费视频| 亚洲区日韩精品中文字幕| 亚洲国产一成久久精品国产成人综合 | 最近中文字幕高清免费中文字幕mv| 亚洲影视自拍揄拍愉拍| 亚洲伦乱亚洲h视频| 131美女爱做免费毛片| 精品国产_亚洲人成在线|