使用 DataOutputStream 将枚举写入文件

Writing Enums to a File Using DataOutputStream

我目前正在编写 Java 游戏,需要将一些数据保存到文件中。我正在使用 DataInputStreamDataOutputStream 来读取和写入文件。然而,虽然大部分需要写入的数据都是原始类型,但我也有一些枚举需要保存在文件中。有没有一种方法可以使用 DataStreams 将枚举读写到文件中?

只需使用它的writeUTF(String str)方法。然后不要写枚举本身,而是写它的字符串表示;例如通过调用枚举对象的 name() 方法。

当然,这需要在 "reading" 部分进行一些编码,以再次将这些字符串转换为枚举常量;但这正是你想要花费精力的地方。

丑陋的事实是:Java 枚举和序列化确实是 讨厌的 话题;因为它引入了非常困难的版本控制冲突,如果你不注意的话。

含义:"normal"大多数人会使用的方式:进行"ordinary"对象序列化;创建一个字节流;并将这些字节写入您的 DataOutputStream。但是为了使它工作,enum class 文件需要在两端匹配。否则,您最终会在 Java 序列化框架的深处遇到异常;这可能很难处理。

长话短说:不要直接序列化枚举,而是发送字符串。