2 回答
TA贡献1786条经验 获得超11个赞
由于您需要Person对象的输出,因此我们需要重写toString()类Person。
[威利·旺卡(WonkaWilly)、查理·巴克特(BucketCharlie)、乔爷爷(JoeGrandpa)]
class Person {
//Respective Constructor, Getter & Setter methods
/* Returns the string representation of Person Class.
* The format of string is firstName lastName (lastNameFirstName)*/
@Override
public String toString() {
return String.format(firstName + " " + lastName + "("+ lastName + firstName + ")");
}
}
有许多方法可以将对象写入文件。这是与PrintWriter
将对象保存到文件
public static void save(String filename, List<Person> list) throws IOException {
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
for (Person person : list) {
pw.println(person.toString());
}
pw.close();
}
或者使用序列化
// 你可以使用序列化机制。要使用它,您需要执行以下操作:
将Person类声明为实现Serializable:
public class Person implements Serializable {
...
@Override
public String toString() {
return String.format(firstName + " " + lastName + "("+ lastName + firstName + ")");
}
}
将您的列表写入文件:
public static void save(String filename, List<Person> list) throws IOException {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list);
oos.close();
}
从文件中读取列表:
public static List<Person> load(String filename) throws IOException {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
List<Person> list = (List<Person>) ois.readObject();
ois.close();
return list;
}
TA贡献1827条经验 获得超8个赞
你可以尝试这样的事情:
public static void save(String filename , ArrayList<Person> persons) throws IOException{
try (ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream (new FileOutputStream (filename)))) {
for(int i = 0; i < persons.size; i++){
out.writeObject(persons.get(i));
}
}
}
添加回答
举报