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

求助文件内容的读取
我是java新手 求助一些java的典型读取文件的问题

首先我有2个文件

第一个每一行是这样的AOI21 g799(.A (encoder_in[10]), .B (n_44), .C (n_56), .Q (n_62));

要把AOI21 encoder_in[0] n_44 n_56还有n62 读取出来存放到string里 什么办法是比较快速的 


另外一种这样的
OA311 5 1 3 0

要把AO311放string 数字放分别int里  

不胜感激

------解决方案--------------------
第一个文件的参数个数是变长的,处理起来稍麻烦点,供参考:

Java code

    public static void main(String[] args) {
        String[] lines = { "NOR3 g836(.A (n_18), .B (n_42), .C (n_22), .Q (n_29));", "BUF g837(.A (n_25), .Q (n_21));",
                "NAND3 g838(.A (n_17), .B (n_20), .C (n_19), .Q (n_25));", "BUF g840(.A (n_17), .Q (n_18));",
                "NAND2 g843(.A (n_15), .B (n_11), .Q (n_23));",
                "NOR3 g841(.A (n_14), .B (encoder_in[13]), .C (encoder_in[5]), .Q (n_17));",
                "BUF g844(.A (n_22), .Q (n_15));", "NAND2 g847(.A (n_13), .B (n_1), .Q (n_14));",
                "NAND2 g845(.A (n_12), .B (n_8), .Q (n_22));", "NAND2 g846(.A (n_11), .B (n_6), .Q (n_42));",
                "BUF g848(.A (n_13), .Q (n_10));" };
        Pattern pat = Pattern.compile("\\.\\w\\s*\\(([^\\)]*)");
        for (String str : lines) {
            ArrayList<String> lst = new ArrayList<String>();
            int pos = str.indexOf(32);
            String name = str.substring(0, pos); // 取开头的名字
            lst.add(name);

            Matcher m = pat.matcher(str); // 借助正则表达式循环定位:括号中的参数
            while (m.find()) {
                lst.add(m.group(1));
            }
            System.out.println(lst);
            
            String[] results = lst.toArray(new String[0]); // 转成你需要的字符串数组
        }

    }