java - 使用 DataOutputStream 将枚举写入文件

标签 java enums dataoutputstream

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

最佳答案

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

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

丑陋的事实是:Java 枚举和序列化确实是一个令人讨厌的话题;因为如果您不注意,它会引入非常严重的版本控制冲突。

含义:大多数人会使用的“正常”方式:进行“普通”对象序列化;创建字节流;并将这些字节写入您的 DataOutputStream。但为了使其工作,枚举类文件需要在两端匹配。如果没有,您最终会在 Java 序列化框架深处遇到异常;这可能很难处理。

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

关于java - 使用 DataOutputStream 将枚举写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42936910/

相关文章:

java - 更快地找出数字是否以 2 开头的方法?

java - Eclipse Text Search,自动循环搜索词列表?

java - 在 Thread.sleep 之前强制屏幕输出

java - 使用 XStream 进行 XML 序列化

c++ - std::unordered_map 使用枚举和定义的类

Java 开启枚举值

java - 将输出保存到文件

java - 将unicode写入rtf文件

c# - 在 C# 中使用枚举进行数学运算(例如 DayOfWeek)

java - DataOutputStream 不刷新