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

下面是我从一篇博文中转载过来的,在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

 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(java,properties,String,HashMap,null,ini)