zip
lxw
2023-10-20 f9fadaf07fd9f2df6e34caf0f0152b646c21a5d4
zip
1个文件已修改
40 ■■■■ 已修改文件
src/main/java/com/whyc/util/ZipAndRarUtil.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/ZipAndRarUtil.java
@@ -4,16 +4,16 @@
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 {
@@ -28,8 +28,9 @@
            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);
@@ -45,6 +46,30 @@
                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 {
@@ -85,8 +110,9 @@
        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) {