【java工具类】生成Zip压缩包
2024-09-16 12:43:07
多文件生成压缩包,返回压缩包生成位置的路径。 FileUtil.java
/**
* 文件打压缩包
* @param files
* @param Name
* @return
* @throws Exception
*/
public static String zipFile(List<File> files, String Name)
throws Exception {
ZipOutputStream zipOut=null;
FileOutputStream fous=null;
/**创建一个临时压缩文件,我们会把文件流全部注入到这个文件中, 这里的文件你可以自定义是.rar还是.zip*/
String zipName = Name + System.currentTimeMillis();
File temp = File.createTempFile(zipName, ".zip");
try {
//创建文件输出流
fous = new FileOutputStream(temp);
zipOut = new ZipOutputStream(fous);
//压缩打包
zipFileToOutputStream(files, zipOut);
return temp.getPath();
}catch (Exception e) {
e.printStackTrace();
}finally{
if(zipOut!=null){
zipOut.close();
}
if(fous !=null){
fous.close();
}
}
return null;
} /**
* 把接受的全部文件打成压缩包
* @param files<File>;
* @param outputStream
*/
public static void zipFileToOutputStream(List<File> files, ZipOutputStream outputStream) {
int size = files.size();
for(int i = 0; i < size; i++) {
File file = (File) files.get(i);
inputFile(file, outputStream);
}
} /**
* 根据输入的文件与输出流对文件进行打包
* @param inputFile
* @param ouputStream
*/
public static void inputFile(File inputFile,ZipOutputStream ouputStream) {
try {
if(inputFile.exists()) {
/**如果是目录的话这里是不采取操作的*/
if (inputFile.isFile()) {
FileInputStream IN = new FileInputStream(inputFile);
BufferedInputStream bins = new BufferedInputStream(IN, 512);
//org.apache.tools.zip.ZipEntry
ZipEntry entry = new ZipEntry(inputFile.getName());
ouputStream.putNextEntry(entry);
// 向压缩文件中输出数据
int nNumber;
byte[] buffer = new byte[512];
while ((nNumber = bins.read(buffer)) != -1) {
ouputStream.write(buffer, 0, nNumber);
}
// 关闭创建的流对象
bins.close();
IN.close();
} else {
try {
File[] files = inputFile.listFiles();
for (int i = 0; i < files.length; i++) {
inputFile(files[i], ouputStream);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
调用:
// 生成压缩包
String tmpFilePath = FileUtil.zipFile(files, "张三");
最新文章
- 在 Windows 上安装Rabbit MQ 指南
- java selenium验证元素是否存在
- NODE学习:利用nodeJS去抓网页的信息
- SpringMVC项目,启动项目怎么总是报找不到log4j.properties文件
- UIStepper swift
- XAMPP 的安装配置
- 【动态规划】HDU 5791 Two
- Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
- Dividing (hdu 1059 多重背包)
- js代码风格之链式结构
- Appium python自动化测试系列之appium环境搭建(二)
- Java 线程基本知识
- 用Docker解决坑爹的环境搭建系列——mysql:5.6
- linux 触摸屏驱动
- element 时间选择器——年
- 获取本地的ip,地址,code
- VUE axios 发送 Form Data 格式数据请求
- python - class类 (五) 继承补充-子类继承父类属性/函数方法
- PhoneGap开发的android项目环境搭建简单流程
- Windows Server 2008 R2下将nginx安装成windows系统服务