日期:2014-05-20 浏览次数:20731 次
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(); } }