package com.xxx.ssptsppt.dataexchange.utils;

import com.xxx.maybee.engine.utils.FileUtil;
import com.xxx.maybee.engine.utils.PubString;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;


public class Confs {
    private static Map<String, File> confFiles;

    static {
        confFiles = new HashMap<>();
        String tmpDir = "tmpconf/";
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
            Resource[] resources = resolver.getResources("/*.json");
            for (Resource resource : resources) {
                String confName = resource.getFilename();
                InputStream confIs = resource.getInputStream();
                File confFile = extractFile(confName, confIs, tmpDir);
                confFiles.put(confName, confFile);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static File extractFile(String confName, InputStream confIs, String tmpDir) {
        File tmpConfDir = new File(tmpDir);
        if (!tmpConfDir.exists()) {
            boolean mkdirs = tmpConfDir.mkdirs();
            if (!mkdirs) {
                throw new RuntimeException("临时配置文件无法创建!");
            }
        }

        File confFilePath = new File(tmpConfDir, confName);
        try {
            FileUtil.saveToFile(confIs, confFilePath, true, false);
        } catch (IOException e) {
            FileUtil.delFolder(tmpDir);
            throw new RuntimeException("配置文件提取失败!");
        }

        return confFilePath;
    }

    public static File getConf(String confFileName) {
        if (PubString.isNullOrSpace(confFileName)) {
            return null;
        }
        return confFiles.get(confFileName);
    }
}

  

相关文章:

  • 2022-12-23
  • 2021-07-05
  • 2021-08-10
  • 2022-01-15
  • 2021-10-29
  • 2021-09-07
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-19
  • 2021-11-19
  • 2021-05-27
  • 2022-01-09
  • 2022-12-23
相关资源
相似解决方案