我有一个对象数组,我想将它们写在一个文本文件中。这样我以后就可以在数组中读回对象。我应该怎么做? 使用序列化。
反序列化不起作用:
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/