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