import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSON; import XXX; import XXX; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.io.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class XXX implements XXX { @Override public boolean configValidateFlag(String key, String value) { // 读取指定目录下所有文件,可替换为需要的目录 File directory = new File("D:\\"); File[] files = directory.listFiles(); if (files == null) { throw new RuntimeException("读取指定目录文件失败"); } // 读取JSON文件内容 List<String> jsonList = new ArrayList<>(); for (File file : files) { if (file.isFile() && file.getName().endsWith(".json")) { String jsonContent = FileUtil.readUtf8String(file); jsonList.add(jsonContent); } } if (CollectionUtils.isEmpty(jsonList)) { throw new RuntimeException("读取apk配置文件失败"); } // 配置比对 Map<String, String> configMap = new HashMap<>(); for (String jsonStr : jsonList) { List<ApkConfigDTO> apkConfigs = JSON.parseArray(jsonStr, ApkConfigDTO.class); for (ApkConfigDTO dto : apkConfigs) { configMap.put(dto.getKey(), dto.getValue()); } if (configMap.containsKey(key)) { return value.equals(configMap.get(key)); } } return false; } }
①接口功能:从json文件中读取配置,与入参配置比较,包含该配置返回true,否则返回false
②实现动态读取,无需重启服务
③XXX为公司相关文件
④参考文章:
https://blog.51cto.com/u_16213442/10517716
============================二编============================
如果只需读取指定文件,用以下方法即可
@Override public boolean configValidateFlag(String key, String value) { // 读取apk配置文件,替换为你的文件路径 File file = new File("D:\\apkConfig.json"); String jsonStr = FileUtil.readUtf8String(file); List<ApkConfigDTO> apkConfigs = JSON.parseArray(jsonStr, ApkConfigDTO.class); if (CollectionUtils.isEmpty(apkConfigs)) { throw new RuntimeException("读取apk配置文件失败"); } // 配置比对 Map<String, String> configMap = new HashMap<>(); for (ApkConfigDTO dto : apkConfigs) { configMap.put(dto.getKey(), dto.getValue()); } if (configMap.containsKey(key)) { return value.equals(configMap.get(key)); } return false; }