• 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();

    }

    }

    }

    }

  • 相关阅读:
    在有跳板机的情况下,SecureCRT自动连接到目标服务器
    JavaScript中使用console调试程序的坑
    Python中docstring文档的写法
    Nginx+uWSGI+Django原理
    uWSGI uwsgi_response_write_body_do(): Connection reset by peer 报错的解决方法
    Python LOGGING使用方法
    Python计算斗牛游戏的概率
    Python垃圾回收机制详解
    PhantomJS实现最简单的模拟登录方案
    如何设置Jquery UI Menu 菜单为横向展示
  • 原文地址:https://www.cnblogs.com/attilax/p/15197616.html
Copyright © 2020-2023  润新知