zoukankan      html  css  js  c++  java
  • Atitit java zip compress use apache tool jar 压缩的问题 static void zip(java.lang.String zipFileName,

    Atitit java zip compress use apache tool jar

    压缩的问题

    static void

    zip(java.lang.String zipFileName,

     java.lang.String absolutPath_waittoProcessFileOrDir) 

    只应该这俩个参数。。网上的在多重目录下有bug,花了好长时间修复bug

    应该啊abs path的目录作为一个文件来看待所以,zip root diras  source dir name

    package com.attilax.compress;

    import static org.junit.Assert.*;

    import org.junit.Test;

    public class ZipUtilTest {

    @Test

    public void testZip() {

    //ZipUtil.zip("c:\\d\\placeholderIndex_v7_frm_java.zip", "", "C:\\d\\placeholderIndex v3 s524");

    ZipUtil.zip("c:\\d\\placeholderIndex_v7_frm_java.zip",  "C:\\d\\war");

    System.out.println("-f");

    }

    }

    private static void

    close_isNos(java.io.OutputStream os, java.io.InputStream is, org.apache.tools.zip.ZipFile zipFile) 

    private static void

    createZipNode(org.apache.tools.zip.ZipOutputStream zos, java.lang.String relativePath)

    创建目录

    private static java.lang.String

    getnewRelativePathByDirjoin(java.lang.String relativeRootPath_inzip, java.lang.String name) 

    static void

    main(java.lang.String[] args) 

    static java.lang.String

    unzip_filelist(java.lang.String zipFilePath)

    解压缩zip

    static java.util.List<java.lang.String>

    unzip_filelistV2(java.lang.String zipFilePath) 

    static void

    unzip_throwRE(java.lang.String zipFilePath, java.lang.String targetPath) 

    static void

    unzip(java.lang.String zipFilePath, java.lang.String targetPath)

    解压缩zip

    static void

    unzipV2(java.lang.String zipFilePath, java.lang.String targetPath)

    解压缩zip

    static void

    unzipV3(java.lang.String zipFilePath, java.lang.String targetPath, com.google.common.base.Function runnableImp)

    解压缩zip

    static void

    unzipZipoisit(java.lang.String zipFilePath) 

    static void

    unzipZipoisit(java.lang.String zipFilePath, com.google.common.base.Function runnableImp)

    upzip to cur dir

    private static void

    upzipSingle(org.apache.tools.zip.ZipFile zipFile, java.lang.String directoryPath, org.apache.tools.zip.ZipEntry zipEntry) 

    private static void

    upzipSingleOutput(org.apache.tools.zip.ZipFile zipFile, org.apache.tools.zip.ZipEntry zipEntry, java.io.File targetFile) 

    static void

    zip(java.lang.String zipFileName, java.lang.String absolutPath_waittoProcessFileOrDir) 

    static void

    zip(java.lang.String zipFileName, java.lang.String relativePath_inzip, java.lang.String absolutPath_waittoProcessFileOrDir)

    压缩

    private static void

    zip(org.apache.tools.zip.ZipOutputStream zos, java.lang.String relativeRootPath_inzip, java.lang.String absolutPath_waittoProcessFileOrDir, java.lang.String Startdir)

    压缩

    private static void

    zipFile(org.apache.tools.zip.ZipOutputStream zos, java.io.File file, java.lang.String relativePath_inzip, java.lang.String startdir)

    压缩文件

    public class ZipUtil {

    protected static Logger logger = LoggerFactory.getLogger(ZipUtil.class);

    public static void zip(String zipFileName, String absolutPath_waittoProcessFileOrDir) {

    File file = new File(absolutPath_waittoProcessFileOrDir);

    String Startdir = file.getParent();

    ZipOutputStream zos = null;

    try {

    zos = new ZipOutputStream(new FileOutputStream(zipFileName));

    } catch (FileNotFoundException e1) {

    ExUtil.throwExV2(e1);

    }

    try {

    zip(zos, "", absolutPath_waittoProcessFileOrDir, Startdir);

    } catch (Exception ex) {

    ExUtil.throwExV2(ex);

    } finally {

    if (null != zos) {

    try {

    zos.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }

    /** */

    /**

     * 压缩

     *

     * @param zipFileName

     *            压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名

     * @param relativePath_inzip

     *            相对路径,默认为空

     * @param absolutPath_waittoProcessFileOrDir

     *            文件或目录的绝对路径

     * @throws FileNotFoundException

     * @throws IOException

     * @author yayagepei

     * @date 2008-8-26

     */

    public static void zip(String zipFileName, String relativePath_inzip, String absolutPath_waittoProcessFileOrDir) {

    File file = new File(absolutPath_waittoProcessFileOrDir);

    String Startdir = file.getParent();

    ZipOutputStream zos = null;

    try {

    zos = new ZipOutputStream(new FileOutputStream(zipFileName));

    } catch (FileNotFoundException e1) {

    ExUtil.throwExV2(e1);

    }

    try {

    zip(zos, relativePath_inzip, absolutPath_waittoProcessFileOrDir, Startdir);

    } catch (Exception ex) {

    ExUtil.throwExV2(ex);

    } finally {

    if (null != zos) {

    try {

    zos.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }

    /** */

    /**

     * 压缩

     *

     * @param zos

     *            压缩输出流

     * @param relativeRootPath_inzip

     *            相对路径

     * @param absolutPath_waittoProcessFileOrDir

     *            文件或文件夹绝对路径

     * @throws IOException

     * @author yayagepei

     * @date 2008-8-26

     */

    // private static void zip(ZipOutputStream zos, String

    // relativeRootPath_inzip, String absolutPath_waittoProcessFileOrDir) {

    // File file = new File(absolutPath_waittoProcessFileOrDir);

    // String Startdir=file.getParent();

    // zip(zos, relativeRootPath_inzip,absolutPath_waittoProcessFileOrDir,

    // Startdir);

    //

    // }

    private static void zip(ZipOutputStream zos, String relativeRootPath_inzip,

    String absolutPath_waittoProcessFileOrDir, String Startdir) {

    File file = new File(absolutPath_waittoProcessFileOrDir);

    if (file.isDirectory()) { // lev1

    // createZipNode(zos, file.getName()+"");

    File[] files = file.listFiles();

    // relativeRootPath_inzip= getnewRelativePathByDirjoin(

    // relativeRootPath_inzip , file.getName());

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

    File tempFile = files[i];

    if (tempFile.isDirectory()) { // lev2

    zip(zos, relativeRootPath_inzip, tempFile.getPath(), Startdir);

    } else { // file mode

    zipFile(zos, tempFile, relativeRootPath_inzip, Startdir);

    }

    }

    } else {

    zipFile(zos, file, relativeRootPath_inzip, Startdir);

    }

    }

    private static String getnewRelativePathByDirjoin(String relativeRootPath_inzip, String name) {

    if (relativeRootPath_inzip == null)

    return name;

    if (relativeRootPath_inzip.trim().length() == 0)

    return name;

    else

    return relativeRootPath_inzip + File.separator + name;

    }

    /** */

    /**

     * 压缩文件

     *

     * @param zos

     *            压缩输出流

     * @param file

     *            文件对象

     * @param relativePath_inzip

     *            相对路径

     * @throws IOException

     * @author yayagepei

     * @param startdir

     * @date 2008-8-26

     */

    private static void zipFile(ZipOutputStream zos, File file, String relativePath_inzip, String startdir) {

    logger.info(file.getAbsolutePath());

    String rltpath = file.getAbsolutePath().substring(startdir.length() + 1);

    String ZipEntrynamej = getnewRelativePathByDirjoin(relativePath_inzip, rltpath);

    ZipEntry entry = new ZipEntry(ZipEntrynamej);

    try {

    zos.putNextEntry(entry);

    } catch (IOException e) {

    ExUtil.throwExV2(e);

    }

    InputStream is = null;

    try {

    is = new FileInputStream(file);

    int BUFFERSIZE = 2 << 10;

    int length = 0;

    byte[] buffer = new byte[BUFFERSIZE];

    while ((length = is.read(buffer, 0, BUFFERSIZE)) >= 0) {

    zos.write(buffer, 0, length);

    }

    zos.flush();

    zos.closeEntry();

    } catch (IOException ex) {

    ExUtil.throwExV2(ex);

    } finally {

    if (null != is) {

    try {

    is.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }

  • 相关阅读:
    堆、栈及静态数据区详解
    新浪云上传代码包
    主机屋MySQL数据库链接
    Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
    height 与 min-height 的继承
    @media 照成的问题
    img 在chrome和Firefox下的兼容性
    Ionic
    setInterval()和setTimeout()可以接收更多的参数
    angularJs 模拟jQuery中的this
  • 原文地址:https://www.cnblogs.com/attilax/p/15197616.html
Copyright © 2011-2022 走看看