package com.whyc.util;
|
|
import com.github.junrar.Archive;
|
import com.github.junrar.rarfile.FileHeader;
|
import com.whyc.pojo.FileMessage;
|
|
import java.io.BufferedInputStream;
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.nio.charset.Charset;
|
import java.nio.charset.StandardCharsets;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipInputStream;
|
|
public class ZipAndRarUtil {
|
public static List<FileMessage> getZipFileList(String zipFileName) throws IOException {
|
ZipInputStream zipInputStream = null;
|
try{
|
FileInputStream inputStream = new FileInputStream(zipFileName);
|
zipInputStream = new ZipInputStream(new BufferedInputStream(inputStream), StandardCharsets.ISO_8859_1);
|
java.util.zip.ZipEntry ze;
|
List<FileMessage> list = new ArrayList<>();
|
//循环遍历
|
while ((ze = zipInputStream.getNextEntry()) != null) {
|
FileMessage fileMessage=new FileMessage();
|
if (!ze.isDirectory()) {
|
//URLEncoder.encode (ze.getName(), "utf-8")
|
fileMessage.setFileName(URLEncoder.encode (ze.getName(), "utf-8"));
|
fileMessage.setFileSize(ze.getSize());
|
String formatted = ActionUtil.sdfwithALL.format( new Date( ze.getLastModifiedTime().toMillis() ) );
|
fileMessage.setFileTime(formatted);
|
list.add(fileMessage);
|
}
|
}
|
return list;
|
} catch (Exception e) {
|
//logger.error(" getZipOneFileContent error:" + e.getMessage());
|
return null;
|
} finally {
|
if (zipInputStream != null) {
|
zipInputStream.closeEntry();
|
}
|
}
|
}
|
|
public static List<FileMessage> getRarList(String rarFileName) throws IOException {
|
FileInputStream inputStream = null;
|
Archive archive = null;
|
try {
|
inputStream = new FileInputStream(rarFileName);
|
archive = new Archive(inputStream);
|
FileHeader fileHeader = archive.nextFileHeader();
|
List<FileMessage> list = new ArrayList<>();
|
while (fileHeader != null) {
|
if (fileHeader.isDirectory()) {
|
continue;
|
}
|
FileMessage fileMessage=new FileMessage();
|
fileMessage.setFileName(fileHeader.getFileNameString());
|
fileMessage.setFileSize(fileHeader.getFullUnpackSize());
|
String formatted = ActionUtil.sdfwithALL.format(fileHeader.getMTime());
|
fileMessage.setFileTime(formatted);
|
list.add(fileMessage);
|
fileHeader = archive.nextFileHeader();
|
}
|
return list;
|
} catch (Exception e) {
|
//logger.error(" getRarFileList error:" + e.getMessage());
|
return null;
|
} finally {
|
if (inputStream != null) {
|
inputStream.close();
|
}
|
if (archive != null) {
|
archive.close();
|
}
|
}
|
}
|
|
public static void main(String[] args) {
|
String zipFile="D:\\IDEAWorkSpace\\CadDrawManager\\target\\doc_file\\FGTP-Pack0990000266(BOM)2023.9.25.zip";
|
List<FileMessage> list=new ArrayList();
|
try {
|
list=ZipAndRarUtil.getZipFileList(zipFile);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
for (FileMessage f:list) {
|
System.out.println(f.toString());
|
}
|
}
|
|
}
|