gpt4 book ai didi

java - 如何在java中读取对象并将其写入文本文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:36 27 4
gpt4 key购买 nike

我有一个对象数组,我想将它们写在一个文本文件中。这样我以后就可以在数组中读回对象。我应该怎么做?使用序列化。

反序列化不起作用:

public static void readdata(){
ObjectInputStream input = null;
try {
input = new ObjectInputStream(new FileInputStream("myfile.txt")); // getting end of file exception here
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
array = (players[]) input.readObject(); // null pointer exception here
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
readdata();
writedata();
}

最佳答案

将对象与字符串相互转换的过程称为序列化和反序列化。为了序列化一个对象,它应该实现 Serializable 接口(interface)。大多数内置数据类型和数据结构默认是可序列化的,只有某些类是不可序列化的(例如 Socket 是不可序列化的)。

所以首先你应该让你的类可序列化:

 class Student implements java.io.Serializable {
String name;
String studentId;
float gpa;
transient String thisFieldWontBeSerialized;
}

您可以使用 ObjectOutputStream 将其序列化并写入文件:

public class Writer {
static void writeToFile(String fileName, Student[] students) throws IOException {
File f = new File(fileName);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
oos.writeObject(students);
oos.flush();
oos.close();
}
}

ObjectInputStream 可以类似的方式用于从文件中读回数组。

关于java - 如何在java中读取对象并将其写入文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com