我正在经历一个 blog我想到了一个问题。是否可以覆盖 ObjectOutputStream 的写入方式。
假设我正在写入文件 out.dat 即
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("C:\\out.dat")));
out.writeObject(o);
当我在 Notepad++ 中打开文件 out.dat 时,我看到了二进制数据。这是有道理的。如果我想自定义写入此数据的方式怎么办。可以说我想要 JSON 格式的 out.dat 文件(这只是一个例子,它可以是任何其他格式)。我应该覆盖什么方法来做到这一点?
最佳答案
您将能够通过实现 Externalizable 并覆盖 writeExternal 和 readExternal 方法来执行您想要的操作。参见 http://download.oracle.com/javase/7/docs/platform/serialization/spec/output.html#3146了解详情。
请注意,它将允许自定义一个对象序列化的输出,但不能自定义整个流的格式。因此,您会在其他二进制数据中找到您的 JSON 字符串。
关于java - 自定义 Java 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421728/