文件的格式有很多种 *.ini 一般是带一个齿轮的配置文件,这个文件的操作有专门的类库进行处理不行自己硬编码 ini4j.jar
这个jar包专门封装了处理*.ini文件的方法。
1 public interface IParaManager { 2 public int getKey(String section, String key, CInt value); 3 public int getkey(String section, String key, CString value); 4 public int getkey(String section, String key, CDouble value); 5 public Map<String, String> getGeys(String section); 6 public int setKey(String section, String key, String value); 7 8 }
1 public class CFileParaManagerNew implements IParaManager { 2 3 private Logger logger = Logger.getLogger(CFileParaManager.class); 4 Wini ini = null; 5 public CFileParaManagerNew(String fileName) throws Exception{ 6 String path = System.getProperty("user.dir");//参数待定 7 String filePath = path + File.separator +"resources" +File.separator + fileName; 8 logger.debug("filePath is" + filePath); 9 Config config = new Config(); 10 config.setMultiSection(true); 11 ini = new Wini(new File(filePath)); 12 } 13 @Override 14 public int getKey(String section, String key, CInt value) { 15 logger.debug("CFileParaManager getKey CInt start"); 16 String str = Integer.valueOf(value.get()).toString(); 17 CString cString = new CString(); 18 cString.set(str); 19 int num = getkey(section, key, cString); 20 if (num != 0) { 21 logger.debug("CFileParaManager getKey CInt fail"); 22 return -1; 23 } 24 int val = Integer.parseInt(cString.get()); 25 value.set(val); 26 logger.debug("CFileParaManager getKey CInt end"); 27 return 0; 28 } 29 30 @Override 31 public int getkey(String section, String key, CString value) { 32 logger.debug("CFileParaManager getKey CString start"); 33 if (null == section || null == key) { 34 logger.debug("CFileParaManager getKey CString start section or key or value is null"); 35 return -1; 36 } 37 logger.debug("section is" + " " + section + " "+ "key is" + " " + key); 38 Config config = new Config(); 39 config.setMultiSection(true); 40 String reValue = ini.get(section, key, String.class); 41 if (reValue == null) { 42 logger.debug("reValue is null"); 43 return -1; 44 } 45 value.set(reValue); 46 return 0; 47 48 } 49 50 @Override 51 public int getkey(String section, String key, CDouble value) { 52 logger.debug("CFileParaManager getKey CDouble start"); 53 String str = Double.valueOf(value.get()).toString(); 54 CString cString = new CString(); 55 cString.set(str); 56 int num = getkey(section, key, cString); 57 if (num != 0) { 58 logger.debug("CFileParaManager getKey CDouble fail"); 59 return -1; 60 } 61 double val = Double.parseDouble(cString.get()); 62 value.set(val); 63 logger.debug("CFileParaManager getKey CDouble end"); 64 return 0; 65 66 } 67 @Override 68 public Map<String, String> getGeys(String section) { 69 logger.debug("CFileParaManager getGeys section start"); 70 if (section == null || section.length() == 0) { 71 logger.debug("CFileParaManager getGeys section is not normal"); 72 } 73 Map<String, String> sections = ini.get(section); 74 logger.debug("CFileParaManager getGeys section end"); 75 return sections; 76 } 77 @Override 78 public int setKey(String section, String key, String value) { 79 logger.debug("CFileParaManager setKey section start"); 80 if (section == null || key == null || value == null) { 81 logger.debug("setction or key or value is not normal"); 82 return -1; 83 } 84 //ini.add(section, key, value); 85 logger.debug("CFileParaManager setKey section end"); 86 //如果section用的话就是修改 没有就是创建 87 ini.put(section, key, value); 88 //2018/10/9 这段代码不加上修改不起任何作用 89 try { 90 ini.store(); 91 } catch (IOException e) { 92 // TODO Auto-generated catch block 93 e.printStackTrace(); 94 } 95 //ini.get(section, key); 96 97 return 0; 98 } 99 100 }
参考的wiki:
https://www.vdisk.cn/ini4j/(ini4j.jar 资源的汇总)
https://blog.csdn.net/wwkms/article/details/48973307(对properties文件的增删改查)
https://blog.csdn.net/xulingqiang/article/details/25059931(对*ini 文件的操作 两个工具方法 一个原始方法)
https://blog.csdn.net/aaronhadoop/article/details/49994413#(*ini文件操作的入门小demo)
https://www.programcreek.com/java-api-examples/index.php?api=org.ini4j.InvalidFileFormatException(没有看懂 但demo确实很多)