日期:2014-05-20  浏览次数:20713 次

跪求大神指点迷津
这是一个文件中的内容,我需要取到文件中,ip的值,linetype的值,以及nodename的值,该怎么解析呢,如果是正则表达式,请帮小弟写几个正则表达式的
[node1]
ip=6E67309A952D99EE4DC5F732C7D1A63A
port=80
linetype=2
nodecode=2
right=1
nodename=河南网通1(正常)

[node2]
ip=6E67309A952D99EE818CABC663E14156
port=80
linetype=2
nodecode=2
right=1
nodename=河南网通2(正常)
...


我能不能用分割的方法封装成对象呢?

如果用分割的方法,遇到[node2]这一类的字符肯定要报错的


求指导,在线等的。。。

------解决方案--------------------
代码帮你写了一段,可以取出来,但是需要你自己处理null的,因为split后第一个是空的
Java code

public static void main(String[] args) throws Exception{
        Reader reader = new FileReader("D:\\workspace\\test\\src\\test.txt");
        StringBuffer sb = new StringBuffer();
        char[] buf = new char[1024];
        int i = 0;
        while((i = reader.read(buf)) != -1){
            sb.append(new String(buf, 0, i));
        }
        reader.close();
        
        String str = sb.toString();
        str.replace(" ", "");
        String[] ss = str.split("\\[node\\d\\]");
        Properties p = new Properties();
        for(String s : ss){
            StringReader sr = new StringReader(s);
            p.load(sr);
            System.out.println(p.get("ip"));
            System.out.println(p.get("port"));
            System.out.println(p.get("linetype"));
            System.out.println(p.get("nodecode"));
            System.out.println(p.get("right"));
            System.out.println(p.get("nodename"));
        }
    }