用Java读取INI文件(带section的)----错误订正

来源:互联网 发布:csploit软件电脑版 编辑:程序博客网 时间:2024/04/29 12:27

下面是我从一篇博文中转载过来的,在android中使用的时候发现转义字符有问题,修改如下,希望给其他朋友有所参考。

下面36~37行的地方应该改为:// --->  \\

最终是通过Properties来实现的,比直接字符流来读取多了很多便利. 可以直接定位到域,根据键就能拿到值.而不是遍历判断来取值

/*        *     IniReader.java    *     用Java读取INI文件(带section的)    *     示例:        *           tmp.IniReader   reader   =   new   tmp.IniReader("E://james//win.ini");    *           out.println(reader.getValue("TestSect3",   "kkk   6"));    */import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.HashMap;import java.util.Properties;public class IniReader {protected HashMap sections = new HashMap();private transient String currentSecion;private transient Properties current;public IniReader(String filename) throws IOException {BufferedReader reader = new BufferedReader(new FileReader(filename));read(reader);reader.close();}protected void read(BufferedReader reader) throws IOException {String line;while ((line = reader.readLine()) != null) {parseLine(line);}}private void parseLine(String line) {line = line.trim();if (line.matches("//[.*//]") == true) {secion = line.replaceFirst("//[(.*)//]", "$1");properties = new Properties();sections.put(secion, properties);} else if (line.matches(".*=.*") == true) {if (properties != null) {int i = line.indexOf('=');String name = line.substring(0, i);String value = line.substring(i + 1);properties.setProperty(name, value);}}}public String getValue(String section, String name) {Properties p = (Properties) sections.get(section);if (p == null) {return null;}String value = p.getProperty(name);return value;}}


ini文件如下:   
    
  [TestSect1]   
  kkk   1=VVVVVVVVVVV1   
  kkk   2=VVVVVVVVVVV2   
    
  [TestSect2]   
  kkk   3=VVVVVVVVVVV3   
  kkk   4=VVVVVVVVVVV4   
    
  [TestSect3]   
  kkk   5=VVVVVVVVVVV5   
  kkk   6=VVVVVVVVVVV6

	
				
		
原创粉丝点击