java 将目录下文件打包成zip,并将zip文件放置到当前目录下工具类
import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZIPUtils {
public static File createZip(String zipFilePath, String resourcePath) throws IOException {
List<File> files = getFileList(new File(resourcePath));
File zip = new File(zipFilePath);
if (zip.exists()) {
zip.delete();
}
zip.createNewFile();
FileOutputStream output = new FileOutputStream(zip);
ZipOutputStream zipOut = new ZipOutputStream(output);
for (File file : files) {
FileInputStream input = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(input);
ZipEntry zipEntry = new ZipEntry(file.getPath().substring(resourcePath.length()));
zipOut.putNextEntry(zipEntry);
int num;
byte[] buffer = new byte[512];
while ((num = bufferedInputStream.read(buffer)) != -1) {
zipOut.write(buffer, 0, num);
}
bufferedInputStream.close();
input.close();
}
zipOut.close();
output.close();
return zip;
}
public static List<File> getFileList(File file){
List<File> fileList = new LinkedList<>();
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()){
fileList.addAll(getFileList(f));
} else {
fileList.add(f);
}
}
return fileList;
}
public static void main(String[] args) throws Exception {
String zipPath = "C:" + File.separator + "test" + File.separator + "1.zip";
String filePath = "C:" + File.separator + "test" + File.separator;
createZip(zipPath, filePath);
}
}