zip4j_1.3.1 压缩文件

1.网上下载zip4j_1.3.1.jar

2.只压缩文件以及压缩文件夹

 (1)压缩两个不同路径的文件夹到一个压缩包中

 ArrayList listfolder = new ArrayList();  
  listfolder.add(Environment.getExternalStorageDirectory()+"/demo");
  listfolder.add(Environment.getExternalStorageDirectory()+"/zip");
  yasuo.zipAll(filesToAdd, listfolder, Environment.getExternalStorageDirectory().toString()+"/DrawingData/demo1.zip");

(2)压缩不同路径的文件到一个压缩包中

ZipFile zipFile;
  try {
   zipFile = new ZipFile(Environment.getExternalStorageDirectory().toString()+"/DrawingData/demo1.zip");
   ArrayList filesToAdd = new ArrayList();  
   filesToAdd.add(new File(Environment.getExternalStorageDirectory().toString()+"/DrawingData/history_favorites.txt"));  
    filesToAdd.add(new File(Environment.getExternalStorageDirectory().toString()+"/DrawingData/deletecomment.png"));  
     filesToAdd.add(new File(Environment.getExternalStorageDirectory().toString()+"/DrawingData/xfont.jff"));  
   filesToAdd.add(new File(Environment.getExternalStorageDirectory().toString()+"/Updaterssss.apk"));  
     
   ZipParameters parameters = new ZipParameters();  
   parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);  
   parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
   zipFile.addFiles(filesToAdd, parameters);
   
   String folderToAdds =Environment.getExternalStorageDirectory()+"/demo";
   
   zipFile.addFolder(folderToAdds, parameters);  
   
 } catch (ZipException e1) {
//   // TODO Auto-generated catch block
   e1.printStackTrace();
 } 

 

(3)压缩一个文件夹到一个压缩包中

yasuo.zip(Environment.getExternalStorageDirectory()+"/demo", Environment.getExternalStorageDirectory().toString()+"/DrawingData/demo.zip");

 

 

 

 

 

 

 

 

公共类:

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

import android.text.TextUtils;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

public class yasuo {
 /**
     * 使用给定密码压缩指定文件或文件夹到指定位置.
     * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".<br />
     * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;<br />
     * 如果以路径分隔符(File.separator)结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名.
     * @param src 要压缩的文件或文件夹路径
     * @param dest 压缩文件存放路径
     * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败.
     */ 
    public static String zip(String src, String dest) {
     
        File srcFile = new File(src); 
        dest = buildDestinationZipFilePath(srcFile, dest); 
        ZipParameters parameters = new ZipParameters(); 
        parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);           // 压缩方式 
        parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);    // 压缩级别 
        try { 
            ZipFile zipFile = new ZipFile(dest); 
            if (srcFile.isDirectory()) { 
                zipFile.addFolder(srcFile, parameters); 
            } else { 
                zipFile.addFile(srcFile, parameters); 
            } 
            return dest; 
        } catch (ZipException e) { 
            e.printStackTrace(); 
        } 
        return null; 
    } 
   
   
    /**
     *
     * @param listfile 文件列表
     * @param listfolder 文件夹列表
     * @param dest 目的地址
     * @return
     */
    public static String zipAll(ArrayList<String> listfile, ArrayList<String> listfolder ,String dest){
     try { 
        ZipFile zipFile = new ZipFile(dest);
     ZipParameters parameters = new ZipParameters(); 
  parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); 
  parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
  zipFile.addFiles(listfile, parameters);
  
  Iterator<String> it=listfolder.iterator();
  while(it.hasNext()){
   zipFile.addFolder(it.next(), parameters);
  }
      } catch (ZipException e) { 
             e.printStackTrace(); 
         } 
     
     return null;
    }
   
   
    /**
     * 构建压缩文件存放路径,如果不存在将会创建
     * 传入的可能是文件名或者目录,也可能不传,此方法用以转换最终压缩文件的存放路径
     * @param srcFile 源文件
     * @param destParam 压缩目标路径
     * @return 正确的压缩文件存放路径
     */ 
    private static String buildDestinationZipFilePath(File srcFile,String destParam) { 
        if (TextUtils.isEmpty(destParam)) { 
            if (srcFile.isDirectory()) { 
                destParam = srcFile.getParent() + File.separator + srcFile.getName() + ".zip"; 
            } else { 
                String fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf(".")); 
                destParam = srcFile.getParent() + File.separator + fileName + ".zip"; 
            } 
        } else { 
            createDestDirectoryIfNecessary(destParam);  // 在指定路径不存在的情况下将其创建出来 
            if (destParam.endsWith(File.separator)) { 
                String fileName = ""; 
                if (srcFile.isDirectory()) { 
                    fileName = srcFile.getName(); 
                } else { 
                    fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf(".")); 
                } 
                destParam += fileName + ".zip"; 
            } 
        } 
        return destParam; 
    } 
 
    /**
     * 在必要的情况下创建压缩文件存放目录,比如指定的存放路径并没有被创建
     * @param destParam 指定的存放路径,有可能该路径并没有被创建
     */ 
    private static void createDestDirectoryIfNecessary(String destParam) { 
        File destDir = null; 
        if (destParam.endsWith(File.separator)) { 
            destDir = new File(destParam); 
        } else { 
            destDir = new File(destParam.substring(0, destParam.lastIndexOf(File.separator))); 
        } 
        if (!destDir.exists()) { 
            destDir.mkdirs(); 
        } 
    } 
   
}

 

posted on 2015-04-13 09:51  luob  阅读(1026)  评论(0编辑  收藏  举报