如何在Java中用File写一个对象数组?

时间:2016-01-06 06:29:37

标签: java file

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

String name;

int age;

int roll_number;

我实例化如下:

Student A[] = new Student();

现在,有没有办法使用文件处理将所有这些信息存储在文本文件中?

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

3 个答案:

答案 0 :(得分:2)

另一种方法是使用Serialization。您的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();
}

答案 1 :(得分:0)

您总是可以在类的toString()方法中计算出格式,这样当您写入文件时,它会按照该格式编写对象。

所以我们说toString()是,

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

因此,这将写入您的文件,(如果您致电bw.write(person.toString());

Name : Azhar : Age : 25

答案 2 :(得分:0)

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

  1. 使用JacksonJSONXML
  2. 对其进行序列化
  3. 然后使用XstreamXML
  4. 进行序列化

    然后,您可以使用FileWriter

    将它们存储到文件中