/*** 将压缩文件中指定后缀名称的文件解压到指定目录
*@paramcompressFile 压缩文件
*@parambaseDirectory 解压到的基础目录(在此目录下创建UUID的目录,存入解压的文件)
*@paramdecompressSuffs 要提取文件的后缀名
*@return
*/@Overridepublic void decompressToDirectory(File compressFile, String baseDirectory, List decompressSuffs) throwsException{
List attachFileList = new ArrayList<>();//验证压缩文件
boolean isFile =compressFile.isFile();if (!isFile){
System.out.println(String.format("compressFile非文件格式!",compressFile.getName()));return null;
}
String compressFileSuff=FileUtil.getFileSuffix(compressFile.getName()).toLowerCase();if (!compressFileSuff.equals("rar")){
System.out.println(String.format("[%s]文件非rar类型的压缩文件!",compressFile.getName()));return null;
}//region 解压缩文件(rar)
Archive archive = null;try{
archive= new Archive(compressFile,null);if (archive == null){return null;}
FileHeader fh=archive.nextFileHeader();while (fh!=null){if (fh.isDirectory()) { //文件夹
continue;
}else{
String rarEntryName= fh.getFileNameW().trim().equals("") ?fh.getFileNameString().trim() : fh.getFileNameW().trim();//过滤非指定后缀文件
String suff =FileUtil.getFileSuffix(rarEntryName).toLowerCase();if (decompressSuffs != null && decompressSuffs.size() > 0){if (decompressSuffs.stream().filter(s->s.equals(suff)).collect(Collectors.toList()).size() <= 0){
fh=archive.nextFileHeader();continue;
}
}//创建解压目录(如果复制的代码,这里会报错,没有StrUtil,这里就是创建了一个目录来存储提取的文件,你可以换其他方式来创建目录)
String groupId =StrUtil.getUUID();
File group= new File(baseDirectory +groupId);if(!group.exists()){
group.mkdirs();
}
String outPath= (baseDirectory + groupId + File.separator + rarEntryName).replaceAll("\\*", "/");
File out= newFile(outPath);
FileOutputStream os= newFileOutputStream(out);
archive.extractFile(fh, os);
os.close();
}
fh=archive.nextFileHeader();
}
}catch(Exception e){
e.printStackTrace();
}finally{
archive.close();
}//endregion
}
java 解压MultipartFile 到目标目录 java解压rar文件到指定目录
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Linux压缩和解压文件
Linux压缩和解压文件
压缩文件 7z linux 解压 -
Linux解压文件到指定目录
tar在Linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数
Linux解压文件到指定目录 linux 指定目录 解压缩 -
java解压rar文件并打开 java解压rar文件到指定目录
最近在看java解压缩,发现RAR没有公开加密算法,所以java内部没有提供api解压,当时就觉得郁闷的,结果在网上查阅了一些,发现了一个思路,就是可以调用系统的命令解压文件,下面是解压的RAR文件的方法
java解压rar文件并打开 java runtime 系统安装 spring -
Java实现zip文件解压[到指定目录]
...
java 指定目录 文件路径 解压文件 上传