需要实现的功能,直接上代码
```java
@Component
public class FileCompress {
//压缩文件
public void compress(String srcPath,String destPath) throws Exception{
File srcFile = new File(srcPath);
File destFile = new File(destPath);
if(!srcFile.exists()){
throw new Exception("源文件不存在");
}
ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(destFile));
//压缩文件夹
if(srcFile.isDirectory()){
File[] files = srcFile.listFiles();
for (File file : files) {
zipFile(zipOutputStream,file,"");
}
}else{
zipFile(zipOutputStream,srcFile,"");
}
zipOutputStream.close();
}
//压缩文件
private void zipFile(ZipOutputStream zipOutputStream,File file,String baseDir) throws Exception{
if(file.isDirectory()){
//文件夹
File[] files = file.listFiles();
for (File file1 : files) {
zipFile(zipOutputStream,file1,baseDir+file.getName()+"/");
}
}else{
//文件
byte[] buffer = new byte[1024];
FileInputStream fileInputStream = new FileInputStream(file);
zipOutputStream.putNextEntry(new ZipEntry(baseDir+file.getName()));
int len = 0;
while ((len = fileInputStream.read(buffer)) > 0){
zipOutputStream.write(buffer,0,len);
}
fileInputStream.close();
}
}
}
```