springBoot 的配置文件如果用properties会有中文乱码的问题,改成yml可以解决。该工具应运而生。 import com.xiaoleilu.hutool.io.FileUtil;import org.junit.jupiter.api.Test;import org.springframework.util.StringUtil
import com.xiaoleilu.hutool.io.FileUtil; import org.junit.jupiter.api.Test; import org.springframework.util.StringUtils; import java.util.*; /** * Created by DimonHo on 2017/11/3. */ public class AnalyzerFiler { /** * properties转yml * @param propertiesPath * @param propertiesCharset * @param ymlCharset * @return */ public String propertiesToYml(String propertiesPath,String propertiesCharset,String ymlCharset){ Listlines = FileUtil.readLines(propertiesPath, propertiesCharset); String path = FileUtil.getAbsolutePath(propertiesPath); //使用treemap排好序 Map sourceMap = new TreeMap (); for (String line:lines){ if (!StringUtils.isEmpty(line) && !line.startsWith("#")){ String key = line.substring(0,line.indexOf("=")); String value = line.substring(line.indexOf("=")+1); sourceMap.put(key,value); } } Iterator it = sourceMap.keySet().iterator(); //保存yml的行内容 List ymlLines = new ArrayList (); //Tab用两个空格格式化 String tab = " "; //yml文档树 Map > treeMap = new TreeMap >(); //父级名称 String parent = ""; //子节点列表 List element = new ArrayList (); while(it.hasNext()){ String key = it.next(); //.拆分key String[] keys = key.split("\\."); String prefix = ""; for (int i=0;i 0){ parent+=keys[i-1]; prefix += tab; } String line = prefix + keys[i]+ ": "; if (treeMap.get(parent)==null) treeMap.put(parent,new ArrayList ()); if(!treeMap.get(parent).contains(line)){ element = treeMap.get(parent)==null?new ArrayList ():treeMap.get(parent); if (!element.contains(line)){ element.add(line); treeMap.put(parent,element); } if (i==keys.length-1){ ymlLines.add(line+sourceMap.get(key)); parent = ""; }else{ ymlLines.add(line); } } } } FileUtil.writeLines(ymlLines,path.replace(".properties",".yml"),ymlCharset); return "ok"; } }