使用java在linux中将多个文件打包为zip,并解决中文文件名乱码

近两天在开发过程中碰到一个需求,需要将服务器上的多个文件打包为ZIP,并进行下载。现将打包核心代码贴出来,以便相互交流:

/**

*

* @param srcfile       需要打包为zip的文件集合

* @param zipfile        创建的zip文件

*/

public void zipFiles(List srcfile, File zipfile) {

byte[] buf = new byte[1024];

try {

// 创建zip文件

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));

// 压缩文件

for (int i = 0; i < srcfile.size(); i++) {

File file = srcfile.get(i);

FileInputStream in = new FileInputStream(file);

// Add ZIP entry to output stream.

ZipEntry zipEntry=new ZipEntry(file.getName());

//解决Linux下,中文文件名乱码

zipEntry.setUnixMode(644);

out.putNextEntry(zipEntry);

// 将字节从文件写到zip文件

int len;

while ((len = in.read(buf)) >0 ) {

out.write(buf, 0, len);

}

// 完成输入

out.setEncoding("utf-8");

out.closeEntry();

in.close();

}

// 释放资源

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

以上代码可以复用,只需传入固定参数即可。并且在Linux环境下,中文文件名乱码也得到解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。