如何在java中读取和写入对象到文本文件?

时间:2015-05-23 13:24:23

标签: java object serialization file-io deserialization

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

反序列化无效:

Mycity

2 个答案:

答案 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。)