直接上代码
package com.qt.base.dprocess;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @Description: Java文件操作
* @author: wangyu
* @date: 2021.06.07
*/
public class FileOperations {
public static void main(String[] args) throws IOException {
//调用压缩方法,压缩多个文件
fileCompressionZip("D:\\sss.xlsx,D:\\111.xlsx,D:\\222.java","D:\\新建文件夹\\9.zip");
}
public static void fileCompressionZip(String inputPath, String outputPath) throws IOException {
List<File> fileList = new ArrayList<>();
FileInputStream fileInputStream = null;
ZipOutputStream zipOut = null;
FileOutputStream outputStream = null;
//获取相关文件
String[] splits = inputPath.split(",");
for (String split : splits) {
File file = new File(split);
fileList.add(file);
}
File zipFile = new File(outputPath);
outputStream = new FileOutputStream(zipFile);
zipOut = new ZipOutputStream(outputStream);
//创建对象一定要在循环外面,傻了才创建在里面!!!!
ZipEntry zipEntry = null;
//遍历文件数组
for (File file : fileList) {
fileInputStream = new FileInputStream(file);
// 实例化 ZipEntry 对象,源文件数组中的当前文件
zipEntry = new ZipEntry(file.getName());
zipOut.putNextEntry(zipEntry);
int temp = 0;
// 定义每次读取的字节数组
//读取相关文件
while ((temp = fileInputStream.read())!= -1){
zipOut.write(temp);
}
}
fileInputStream.close();
zipOut.closeEntry();
zipOut.close();
fileInputStream.close();
outputStream.close();
}
}