日期:2014-05-20 浏览次数:20935 次
public void test(){
    String lineTxt="";   
    BufferedReader bf=null;
    List<TMobiles> mlist = new ArrayList<TMobiles>; //集合要new好一个对象
    TMobiles tm =null; //自定义的实体类
    while((lineTxt = bf.readLine()) != null) {
        if((lineTxt.substring(0,4)).equals("mobi")){ //遇到TMobiles类的开头数据才new
            tm = new TMobiles();
            mlist.add(tm); //同时add到mlist
            tm.setMobile_number(lineTxt.substring(lineTxt.indexOf("=")+1));
        } else if((lineTxt.substring(0,4)).equals("card")) {
            tm.setCard_number(lineTxt.substring(lineTxt.indexOf("=")+1));
        } else if((lineTxt.substring(0,4)).equals("avai")) {
            tm.setIs_available(lineTxt.substring(lineTxt.indexOf("=")+1));
        } else if((lineTxt.substring(0,4)).equals("type")) {
            tm.setMobile_type(lineTxt.substring(lineTxt.indexOf("=")+1));
        }
    }
}
------解决方案--------------------
十一真是无聊啊……
楼主的问题主要是逻辑没处理好,加上有语法错误,参考下,具体见注释:
import java.io.*;
import java.util.*;
// 模拟这个类,为编译通过
class TMobiles {
    void setMobile_number(String arg) {
    }
    void setCard_number(String arg) {
    }
    void setIs_available(String arg) {
    }
    void setMobile_type(String arg) {
    }
}
public class ReadFile {
    // 设置所读文件的路径,这里为当前路径下的Mobiles.txt
    private static String file2ReadPath = "./Mobiles.txt";
    public static void test() {
        String lineTxt = null; 
        BufferedReader br = null;
        // 先构造mlist
        List<TMobiles> mlist = new ArrayList<TMobiles>();;
        TMobiles tm = null;
        try {
            // 打开流
            br = new BufferedReader(new FileReader(file2ReadPath), 1024);
            while ((lineTxt = br.readLine()) != null) {
                // 匹配mobile_number=xxx的行,以下类似
                if (lineTxt.matches("^\\s*mobile_number=\\d+\\s*$")) {
                    // 碰到以mobile_number=xxx的行就创建这个对象
                    System.out.println(lineTxt);
                    tm = new TMobiles();
                    tm.setMobile_number(lineTxt.substring(lineTxt.indexOf("=") + 1));
                    // 直接放入mlist
                    mlist.add(tm);
                } else if (lineTxt.matches("^\\s*card_number=\\d+\\s*$")) {
                    System.out.println(lineTxt);
                    tm.setCard_number(lineTxt.substring(lineTxt.indexOf("=") + 1));
                } else if (lineTxt.matches("^\\s*available=[YN]+\\s*$")) {
                    System.out.println(lineTxt);
                    tm.setIs_available(lineTxt.substring(lineTxt.indexOf("=") + 1));
                } else if (lineTxt.matches("^\\s*type=.*$")) {
                    System.out.println(lineTxt);
                    tm.setMobile_type(lineTxt.substring(lineTxt.indexOf("=") + 1));
                }
            }
            // 输出总共构造了多少个对象
            System.out.println("mlist.size() is: " + mlist.size());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭流
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        test();
    }
}