package com.ruoyi.common.utils.file; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * 将文件打成压缩包 * @author jianglw * @version 1.0 * @date 2021/1/29 18:51 */ public class FileToZip { /** * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的ZIP文件,并存放到zipFilePath。 * @param sourceFilePath 待压缩的文件路径 * @param zipFilePath 压缩后存放路径 * @param fileName 压缩后文件的名称 * @return flag */ public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) { boolean flag = false; File sourceFile = new File(sourceFilePath); FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStream fos = null; ZipOutputStream zos = null; if (!sourceFile.exists()) { System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 不存在. <<<<<<"); } else { try { File zipFile = new File(zipFilePath + "/" + fileName + ".zip"); //判断压缩文件是否存在,存在删除 if (zipFile.exists()) { zipFile.delete(); } File[] sourceFiles = sourceFile.listFiles(); if (null == sourceFiles || sourceFiles.length < 1) { System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 里面不存在文件,无需压缩. <<<<<<"); } else { fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(new BufferedOutputStream(fos)); byte[] bufs = new byte[1024 * 10]; for (int i = 0; i < sourceFiles.length; i++) { // 创建ZIP实体,并添加进压缩包 ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName()); zos.putNextEntry(zipEntry); // 读取待压缩的文件并写进压缩包里 fis = new FileInputStream(sourceFiles[i]); bis = new BufferedInputStream(fis, 1024 * 10); int read = 0; while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) { zos.write(bufs, 0, read); } } flag = true; } } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } finally { // 关闭流 try { if (null != bis) { bis.close(); } if (null != zos) { zos.close(); } } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } return flag; } public static void main(String[] args) { String sourceFilePath = "D:\\file\\admin"; String zipFilePath = "D:\\file\\admin"; String fileName = "配置文件"; boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName); if (flag) { System.out.println(">>>>>> 文件打包成功. <<<<<<"); } else { System.out.println(">>>>>> 文件打包失败. <<<<<<"); } } }