使用DataOutputStream将枚举写入文件

时间:2017-03-21 19:51:56

标签: java enums dataoutputstream

我目前正在编写Java游戏,需要将一些数据保存到文件中。我使用DataInputStreamDataOutputStream来为文件进行读写操作。但是,虽然大多数需要编写的数据都是原始类型,但我也有一些需要保存在文件中的枚举。有没有办法使用DataStreams读取和写入文件的枚举?

1 个答案:

答案 0 :(得分:1)

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

当然,这需要对"阅读"进行一些编码。部分将这些字符串再次转换为枚举常量;但这正是你想要消耗能量的地方。

丑陋的事实是:Java枚举和序列化真的是讨厌的主题;因为如果你不注意,它会引入很难的版本化冲突。

含义:"正常"大多数人会使用的方式:做"普通"对象序列化;创建一个字节流;并将这些字节写入DataOutputStream。但是为了使这项工作,enum类文件需要在两端匹配。如果没有,您最终会在Java序列化框架中深入了解异常;可以很难来处理。

故事很长:不要直接序列化枚举,而是发送字符串。