Java实现压缩文件的方法
程序员文章站
2022-05-15 13:11:30
...
package Zip;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author 犀角
* @date 2019/10/28 16:16
* @description
*/
public class Zip {
/**
* 压缩文件夹到指定目录(JDK)
* @param srcDir 压缩文件夹
* @param targetDir 压缩文件存放目录
* @param zipName 压缩文件名字
* @return
*/
public static boolean toZip(String srcDir, String targetDir, String zipName) {
File src = new File(srcDir);
if (!src.exists()) {
//创建由这个抽象路径名命名的目录
src.mkdirs();
}
//创建文件的抽象路径名数组,抽象路径名表示的目录
File[] srcFiles=src.listFiles();
if(srcFiles == null || srcFiles.length<1){
System.out.println(srcDir+"目录下没有文件!");
return false;
}
File zipFile = new File(targetDir + zipName);
if (!zipFile.exists()){
try {
zipFile.createNewFile();
} catch (IOException e) {
System.out.println(targetDir + zipName + ".zip创建失败!");
return false;
}
}
FileOutputStream fos = null;
ZipOutputStream zos = null;
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(new BufferedOutputStream(fos));
byte[] bufs = new byte[1024*8];
for (File file:srcFiles){
ZipEntry zipEntry=new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis,1024*8);
int read = 0;
while ((read = bis.read(bufs, 0, 1024*8)) !=-1){
zos.write(bufs,0,read);
}
}
} catch (IOException e) {
e.printStackTrace();
System.out.println(srcDir + "压缩失败!");
return false;
}finally {
try {
if (zos!=null){
zos.close();
}
if (fos!=null){
fos.close();
}
if (fis!=null){
fis.close();
}
if (bis!=null){
bis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
}
上一篇: Docker compose网络
下一篇: shell判断对文件和文件夹的判断