【发布时间】:2016-03-21 13:16:54
【问题描述】:
我在从文件中读取特定对象并将其保存到 ArrayList 时遇到问题。
首先,我使用writeCustomer() 写一个客户。然后我从List customerList 写入所有记录并将它们保存到文件中。这很好用。
然后我想读取保存的文件,所以我使用readCustomer() 读取了一行。此方法返回一个Customer,然后我想使用readData() 返回一个包含所有Clients 的列表并读取它,我在list.add(readCustomer(bufferedReader)) 行中有nullPointerException;
我的Class Customer 有一个构造函数,并且有一个覆盖方法toString()。
public class SaveCustomers {
public static void main(String[] args) throws IOException {
List<Customers> customersList = new ArrayList<>();
customersList.add(new Customers("ABC", 10));
customersList.add(new Customers("SGS", 20));
customersList.add(new Customers("FSD", 30));
try (PrintWriter out = new PrintWriter("customer.txt", "UTF-8"))
{ writeData(customersList, out); }
BufferedReader bufferedReader = new BufferedReader(new FileReader("customer.txt"));
List<Customers> newList = readData(bufferedReader);
for(Customers c: newList){
System.out.println(c);
}
}
private static void writeCustomer(PrintWriter out, Customers customers){
out.println(customers.getName()+"|"+customers.getTarrif());
}
private static void writeData(List<Customers> customersList, PrintWriter out){
for(Customers c:customersList){
writeCustomer(out, c);
}
}
public static Customers readCustomer(BufferedReader bufferedReader) throws IOException {
String line = bufferedReader.readLine();
String [] tokens = line.split("\\|");
String name = tokens[0];
int time = Integer.valueOf(tokens[1]);
return new Customers(name, time);
}
public static List<Customers> readData(BufferedReader bufferedReader) throws IOException {
List<Customers> list = new ArrayList<>();
while (bufferedReader.readLine() != null) {
list.add(readCustomer(bufferedReader));
}
return list;
}}
【问题讨论】:
-
“我有一个问题....它不起作用”——到底发生了什么?例外?输出错误?无限循环?
-
感谢 Sasha 降低了我的声誉。我希望谢谢你做了你有更好的心情....
-
如果你有兴趣,我没有投反对票。评论有时只是评论。大多数投反对票的人根本不发表评论。
-
萨沙,对不起。你是个好人,你很有帮助。
-
@bartek1982 改进了英语但不幸的是问题仍然质量低下。您能否编辑您的帖子并说明“它不起作用”是什么意思?
标签: java arraylist bufferedreader