繁体   English   中英

如何在Java中将对象数组写入文件?

[英]How to write an array of objects to a File in Java?

假设我有一个Student类的对象,该对象具有以下字段:

String name;

int age;

int roll_number;

我实例化为:

Student A[] = new Student();

现在,是否有一种使用文件处理将所有这些信息存储在文本文件中的方法?

我考虑过遍历数组中的每个元素,然后将所有字段都转换为字符串,但这似乎是错误的。

另一种方法是使用序列化 您的Student类必须实现Serializable

class Student implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;
    private int age;
    private int rollNumber;
    //...
}

然后读取和写入Student数组:

try {
    Student[] students = new Student[3];

    //Write Student array to file.
    FileOutputStream fos = new FileOutputStream("students.ser");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(students);
    oos.close();

    //Read Student array from file.
    FileInputStream fis = new FileInputStream("students.ser");
    ObjectInputStream ois = new ObjectInputStream(fis);
    Student[] studentsFromSavedFile = (Student[]) ois.readObject();
    ois.close();
}
catch (FileNotFoundException e) {
    e.printStackTrace();
}
catch (IOException e) {
    e.printStackTrace();
}
catch (ClassNotFoundException e) {
    e.printStackTrace();
}

您始终可以在类的toString()方法中计算格式,以便在写入文件时,它将按照该格式写入对象。

假设您的toString()是,

public String toString() {
    return "Name : " + name + " : Age : " + age;
}

因此,这将以以下形式写入您的文件(如果您调用bw.write(person.toString());

Name : Azhar : Age : 25

如果您不关心任何格式(文本或二进制),则可以尝试以下几种方法:

  1. 使用Jackson将其序列化为JSONXML
  2. 然后将Xstream序列化为 XML

然后您可以使用FileWriter将它们存储到文件中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM