將file壓縮zip文件


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 將file壓縮zip文件
 **/
public class FileUtils {

    private static final Logger logger  = LoggerFactory.getLogger(FileUtils.class);

    /**
     *  file壓縮zip
     * @param fileMap 壓縮文件map集合
     * @param zipName zip文件名 放款資料推送	新生合同號_yyyyMMdd.zip  放款材料補傳	新生借據號_yyyyMMdd.zip
     * @param localFilePath 上傳地址
     * @return 無
     */
    public static String compressZip(Map<String, File> fileMap, String zipName, String localFilePath) {
        //文件id名組成 每個文件命名按照【類型_序號.文件類型】的方式。
        // BEFORE_LOAN	放款前提交放款材料
        // AFTER_LOAN	放款後補充放款材料
        // String zipEntryName = "BEFORE_LOAN" + "_";
        ZipOutputStream zipOutputStream = null;
        FileOutputStream fileOutputStream = null;
        FileInputStream fileInputStream = null;

        try {
            fileOutputStream = new FileOutputStream(new File(localFilePath + zipName));
            zipOutputStream = new ZipOutputStream(fileOutputStream);
            ZipEntry zipEntry = null;
            List<String> strings = fileMap.keySet().stream().collect(Collectors.toList());
            for (int i = 0; i < strings.size(); i++) {
                String fileNmae = strings.get(i);
                fileInputStream = new FileInputStream(fileMap.get(fileNmae));
                zipEntry = new ZipEntry(fileNmae + "_" + (i + 1)+".jpg");
                zipOutputStream.putNextEntry(zipEntry);
                int len;
                byte[] buffer = new byte[1024];
                while ((len = fileInputStream.read(buffer)) > 0) {
                    zipOutputStream.write(buffer, 0, len);
                }
                fileInputStream.close();
            }
            zipOutputStream.closeEntry();
            zipOutputStream.close();
            fileOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("zip打包異常", e.getMessage());
            return null;
        }
        return localFilePath + zipName;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章