1.调用file3Zip方法
/***
*
* @param file
* @param path 压缩的路径:path="C:/yasuo/"
* @param name 压缩文件的名称
* @return
*/
public String yaSuo(File file,String path,String name) {
//取需要加入压缩包的文件
String[] aa=file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//文件名包含.docx将被选出来放入数组
if(name.contains(".docx")) {
return true;
}
return false;
}
});
//循环数组加入文件集合
List<String> list=new ArrayList<String>();
for(int i=0;i<aa.length;i++) {
list.add(aa[i]);
}
ZipOutputStream zipOutputStream = null;
try {
//创建压缩文件
//zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
//根据路径和List文件名将文件加入压缩包
XwpfTest.file3Zip(path,name,list);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(zipOutputStream!=null)
try {
zipOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return path+name;
}
/**
* 生成.zip文件(当前方法限定 zip文件输出路径必须与压缩文件在同一路径下)
*
* @param path zip输出路径前缀
* @param compressFileNames 压缩文件名称
* @parm List<String> 文件集合
* @throws IOException 异常信息
*/
public static String file3Zip(String path,String name, List<String> fileNameList) throws IOException {
ZipOutputStream zipOutputStream;
//创建压缩包文件对象 压缩包名称
File file = new File(path + name);
//创建压缩包流并创建对应压缩包
zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
//获取当前文件路径下所有文件数组
File[] files = new File(path).listFiles();
FileInputStream fileInputStream;
byte[] buf = new byte[1024];
String fileName;
int len;
//List<String> fileNameList = Arrays.asList(compressFileNames);
if (files != null && files.length > 0) {
//遍历当前文件列表 当前文件名称包含传入的文件名称时 将当前文件进行压缩
for (File excelFile : files) {
fileName = excelFile.getName();
//判断是否包含当前文件
if (fileNameList.contains(fileName)) {
//获取当前文件输入流
fileInputStream = new FileInputStream(excelFile);
//放入压缩zip包中
zipOutputStream.putNextEntry(new ZipEntry(fileName));
//读取文件
while ((len = fileInputStream.read(buf)) > 0) {
zipOutputStream.write(buf, 0, len);
}
//关闭当前压缩包流
zipOutputStream.closeEntry();
//关闭输入流
fileInputStream.close();
}
}
}
//关闭输出流
zipOutputStream.close();
return file.getName();
}