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

    }

    }

    }

    }

  • 相关阅读:
    企业如何推行白盒测试
    Java命名规范
    MobileVLC for iphoneos4.3
    用Android NDK编译FFmpeg
    Linux 下Android 开发环境搭建 ---CentOS
    为什么要做白盒测试
    vlc的第三方库contrib的修改之一:live库的修改
    VC命名规范
    POJ 1470 Closest Common Ancestors (LCA入门题)
    HDU 4407 Sum 第37届ACM/ICPC 金华赛区 第1008题 (容斥原理)
  • 原文地址:https://www.cnblogs.com/attilax/p/15197616.html
Copyright © 2020-2023  润新知