| | |
| | | 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.io.*; |
| | | 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.Enumeration; |
| | | import java.util.List; |
| | | import java.util.zip.ZipEntry; |
| | | import java.util.zip.ZipFile; |
| | | import java.util.zip.ZipInputStream; |
| | | |
| | | public class ZipAndRarUtil { |
| | |
| | | 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")); |
| | | //URLEncoder.encode (ze.getName(), "ISO-8859-1") |
| | | //new String(ze.getName().getBytes(StandardCharsets.ISO_8859_1), "UTF-8") |
| | | fileMessage.setFileName(ze.getName()); |
| | | fileMessage.setFileSize(ze.getSize()); |
| | | String formatted = ActionUtil.sdfwithALL.format( new Date( ze.getLastModifiedTime().toMillis() ) ); |
| | | fileMessage.setFileTime(formatted); |
| | |
| | | zipInputStream.closeEntry(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private static List<FileMessage> unZipFiles(String zipFileName){ |
| | | File zipFile=new File(zipFileName); |
| | | List<FileMessage> list=new ArrayList<FileMessage>(); |
| | | //解决zip文件中有中文目录或者中文文件 |
| | | try { |
| | | ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK")); |
| | | for(Enumeration entries = zip.entries(); entries.hasMoreElements();){ |
| | | ZipEntry entry = (ZipEntry)entries.nextElement(); |
| | | InputStream in = zip.getInputStream(entry); |
| | | //输出文件路径信息 |
| | | FileMessage fileMessage=new FileMessage(); |
| | | fileMessage.setFileName(entry.getName()); |
| | | fileMessage.setFileSize(entry.getSize()); |
| | | String formatted = ActionUtil.sdfwithALL.format( new Date( entry.getLastModifiedTime().toMillis() ) ); |
| | | fileMessage.setFileTime(formatted); |
| | | list.add(fileMessage); |
| | | in.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public static List<FileMessage> getRarList(String rarFileName) throws IOException { |
| | |
| | | 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) { |
| | | //list=ZipAndRarUtil.getZipFileList(zipFile); |
| | | list=ZipAndRarUtil.unZipFiles(zipFile); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | for (FileMessage f:list) { |