@Component public class ZipReader extends Object
| 限定符和类型 | 类和说明 |
|---|---|
class |
ZipReader.FileNode
文件节点(区分文件上下级)
|
(专用程序包) class |
ZipReader.RarExtractorWorker
Rar文件抽取
|
(专用程序包) class |
ZipReader.SevenZExtractorWorker
7z文件抽取线程
|
(专用程序包) class |
ZipReader.ZipExtractorWorker
Zip文件抽取线程
|
| 限定符和类型 | 字段和说明 |
|---|---|
private ConfigConstants |
configConstants |
(专用程序包) ExecutorService |
executors |
(专用程序包) FileUtils |
fileUtils |
private org.slf4j.Logger |
logger |
(专用程序包) static Pattern |
pattern |
static Comparator<ZipReader.FileNode> |
sortComparator |
| 构造器和说明 |
|---|
ZipReader() |
| 限定符和类型 | 方法和说明 |
|---|---|
private void |
addNodes(Map<String,ZipReader.FileNode> appender,
String parentName,
ZipReader.FileNode node) |
private static String |
getLast2FileName(String fullName,
String seperator,
String rootName)
获取倒数第二个文件(夹)名
|
private static String |
getLastFileName(String fullName,
String seperator)
获取最后一个文件(夹)的名字
|
private static BigDecimal |
isStartNumber(ZipReader.FileNode src) |
String |
read7zFile(String filePath,
String fileKey)
解压7z文件
|
String |
readZipFile(String filePath,
String fileKey)
读取压缩文件
文件压缩到统一目录fileDir下,并且命名使用压缩文件名+文件名因为文件名
可能会重复(在系统中对于同一种类型的材料压缩文件内的文件是一样的,如果文件名
重复,那么这里会被覆盖[同一个压缩文件中的不同目录中的相同文件名暂时不考虑])
注:
文件名命名中的参数的说明:
1.archiveName,为避免解压的文件中有重名的文件会彼此覆盖,所以加上了archiveName,因为在ufile中archiveName
是不会重复的。
|
private List<com.github.junrar.rarfile.FileHeader> |
sortedHeaders(List<com.github.junrar.rarfile.FileHeader> headers) |
private Enumeration<org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry> |
sortSevenZEntries(Iterable<org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry> entries)
排序7ZEntries(对原来列表倒序)
|
private Enumeration<org.apache.commons.compress.archivers.zip.ZipArchiveEntry> |
sortZipEntries(Enumeration<org.apache.commons.compress.archivers.zip.ZipArchiveEntry> entries)
排序zipEntries(对原来列表倒序)
|
String |
unRar(String filePath,
String fileKey) |
private org.slf4j.Logger logger
static Pattern pattern
@Autowired FileUtils fileUtils
@Autowired private ConfigConstants configConstants
ExecutorService executors
public static Comparator<ZipReader.FileNode> sortComparator
public String readZipFile(String filePath, String fileKey)
文件名命名中的参数的说明: 1.archiveName,为避免解压的文件中有重名的文件会彼此覆盖,所以加上了archiveName,因为在ufile中archiveName 是不会重复的。 2.level,这里层级结构的列表我是通过一个map来构造的,map的key是文件的名字,值是对应的文件,这样每次向map中 加入节点的时候都会获取父节点是否存在,存在则会获取父节点的value并将当前节点加入到父节点的childList中(这里利用 的是java语言的引用的特性)。
filePath - private Enumeration<org.apache.commons.compress.archivers.zip.ZipArchiveEntry> sortZipEntries(Enumeration<org.apache.commons.compress.archivers.zip.ZipArchiveEntry> entries)
entries - public String read7zFile(String filePath, String fileKey)
filePath - fileKey - private Enumeration<org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry> sortSevenZEntries(Iterable<org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry> entries)
entries - private void addNodes(Map<String,ZipReader.FileNode> appender, String parentName, ZipReader.FileNode node)
private List<com.github.junrar.rarfile.FileHeader> sortedHeaders(List<com.github.junrar.rarfile.FileHeader> headers)
private static String getLast2FileName(String fullName, String seperator, String rootName)
fullName - seperator - 压缩文件解压后,不同的压缩格式分隔符不一样zip是/,而rar是\rootName - 根目录名:如果倒数第二个路径为空,那么赋值为rootNameprivate static String getLastFileName(String fullName, String seperator)
fullName - seperator - 压缩文件解压后,不同的压缩格式分隔符不一样zip是/,而rar是\private static BigDecimal isStartNumber(ZipReader.FileNode src)
Copyright © 2019. All rights reserved.