我有一个对象数组,我想在文本文件中编写它们。这样我以后就可以在数组中读回对象了。我该怎么办? 使用序列化。
反序列化无效:
Mycity
答案 0 :(得分:2)
将对象转换为字符串(反之亦然)的过程称为序列化和反序列化。为了序列化对象,它应该实现's/.*City:<\/p><\/td>.*?<p>\(.*\)<\/p><\/td>.*/\1/p'
^
接口。默认情况下,大多数内置数据类型和数据结构都是可序列化的,只有某些类不可序列化(例如Serializable
不可序列化)。
首先,你应该让你的类Serializable:
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();
}
}
可以类似的方式用于从文件中读回数组。
答案 1 :(得分:0)
据我所知,Java并没有为您提供一种简单的方法来为任意对象执行此操作。因此,请考虑将自己限制为Serializable
。
如果您必须处理的对象属于您自己的类,并且您希望这些类实现java.io.Serializable
接口,请仔细阅读'contract' it comes with,而不是所有必须保证的内容您的课程将在编译时以编程方式强制执行。 (因此,如果您的类实现Serializable
而没有完全遵循它所带来的条件,那么您可能会遇到运行时错误或者只是“错误”并且可能难以检测运行时行为。)
(另见best practices。)