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.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.zip.ZipInputStream; public class ZipAndRarUtil { public static List getZipFileList(String zipFileName) throws IOException { ZipInputStream zipInputStream = null; try{ FileInputStream inputStream = new FileInputStream(zipFileName); zipInputStream = new ZipInputStream( new BufferedInputStream(inputStream), StandardCharsets.UTF_8); java.util.zip.ZipEntry ze; List list = new ArrayList<>(); //循环遍历 while ((ze = zipInputStream.getNextEntry()) != null) { FileMessage fileMessage=new FileMessage(); if (!ze.isDirectory()) { fileMessage.setFileName(ze.getName()); 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 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 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(); } } } }