下面是我从一篇博文中转载过来的,在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读取ini文件(很简