功能需求:
压缩多个文件成一个zip,并把原始的各个文件删除
实现:
传压缩包文件名(全路径)、需要压缩的一个或多个文件名(全路径)和是否删除原始文件标志(可选是否删除)
话不多说,放码出来。。。
压缩类:
package oracleTestProject;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @Description ZIP工具类
* @Author lsdeng
* @CreateTime 2020年4月5日 下午12:03:35
* @HistoryLog
*/
public class ZipUtil {
public boolean DeleteTempFile = true; // 是否刪除临时文件标志
public List<String> sFileNames = null;//需要压缩的文件名集合(全路径)
public String zipFileName = "";//压缩包文件名(全路径)
public boolean CreateZip() throws Exception {
boolean isCreate = true;
ZipOutputStream out = null;
FileInputStream in = null;
try {
File zipFile = new File(zipFileName);
//1.压缩文件
File srcFile[] = new File[sFileNames.size()];
for (int i = 0; i < sFileNames.size(); i++) {
srcFile[i] = new File(sFileNames.get(i));
}
byte[] byt = new byte[1024];
out = new ZipOutputStream(new FileOutputStream(zipFile));
for (int i = 0; i < srcFile.length; i++) {
try{
in = new FileInputStream(srcFile[i]);
out.putNextEntry(new ZipEntry(srcFile[i].getName()));
int length;
while((length=in.read(byt)) > 0){
out.write(byt,0,length);
}
out.closeEntry();
in.close();
}catch (Exception e){
isCreate = false;
e.printStackTrace();
throw new Exception(e);
}finally{
try{
in.close();
}catch (Exception e1){
}
}
}
out.close();
//2.删除服务器上的临时文件
if(DeleteTempFile){
for (int i = 0; i < srcFile.length; i++) {
File temFile = srcFile[i];
if(temFile.exists() && temFile.isFile()){
temFile.delete();
}
}
}
} catch (Exception e) {
isCreate = false;
}finally {
try {
out.close();
in.close();
} catch (IOException e) {
}
}
return isCreate;
}
public boolean isDeleteTempFile() {
return DeleteTempFile;
}
public void setDeleteTempFile(boolean deleteTempFile) {
DeleteTempFile = deleteTempFile;
}
public List<String> getsFileNames() {
return sFileNames;
}
public void setsFileNames(List<String> sFileNames) {
this.sFileNames = sFileNames;
}
public String getZipFileName() {
return zipFileName;
}
public void setZipFileName(String zipFileName) {
this.zipFileName = zipFileName;
}
}
测试类:
package oracleTestProject;
import java.util.ArrayList;
import java.util.List;
public class MyTest20200405 {
public static void main(String[] args) throws Exception {
try {
String zipFileName = "F:/study/20200405/压缩包001.zip";
List<String> sFileNames = new ArrayList<String>();
sFileNames.add("F:/study/20200405/DOC文档.doc");
ZipUtil zu = new ZipUtil();
zu.setsFileNames(sFileNames);
zu.setDeleteTempFile(false);
zu.setZipFileName(zipFileName);
zu.CreateZip();
} catch (Exception e) {
e.printStackTrace();
}
}
}
压缩结果:
如有不妥之处欢迎指正,谢谢。