java实现多个文件以压缩包导出到本地
描述:使用java将多个文件同时压缩为压缩包,并导出到本地
/** *压缩文件并导出 */ public static void zipFiles() throws IOException { File file = null; String zipFileName = ""; File[] tempList = null; file = new File("需要压缩的文件夹名称"); zipFileName = "/压缩文件名称.zip"; //压缩文件夹下所有文件 tempList = file.listFiles(); //加密打包文件开始 ZipUtils.createZipFile(压缩密码,导出的压缩文件包存储路径,zipFileName,tempList); //加密打包文件结束 if(file.exists()) { //删除已打包的文件夹 file.delete(); } }
打包文件帮助类如下:需要引入zip4j.jar
import java.io.File; import java.util.ArrayList; 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 ZipUtils { /** * 加密文件并导出 * @param file 要进行压缩的文件 * @param password_zip 压缩密码 * @param templatepath_zip 压缩包路径 * @param fileName 压缩文件名 * @return zip文件 * */ public static ZipFile createZipFile(String passwordZip, String templatePathZip, String fileName,File...files) { try { // 創建zip包,指定了zip路徑和zip名稱 final ZipFile zipFile = new ZipFile(templatePathZip + fileName); // 向zip包中添加文件集合 final ArrayList<File> fileAddZip = new ArrayList<File>(); File file1 = zipFile.getFile(); // 判断是否存在 if (file1.exists()) { file1.delete(); } // 向zip包中添加文件 for(File file:files){ fileAddZip.add(file); } // 设置zip包的一些参数集合 final ZipParameters parameters = new ZipParameters(); // 是否设置密码(若passwordZip为空,则为false) if(null != passwordZip && !passwordZip.equals("")) { parameters.setEncryptFiles(true); // 压缩包密码 parameters.setPassword(passwordZip); } else { parameters.setEncryptFiles(false); } // 压缩方式(默认值) parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 普通级别(参数很多) parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 加密级别 parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 创建压缩包完成 zipFile.createZipFile(fileAddZip, parameters); //压缩完成后删除文件 for(File file:files){ file.delete(); } return zipFile; } catch (final ZipException e) { e.printStackTrace(); return null; } } }