Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java序列化与纯文本文件_Java_File_Serialization_Io - Fatal编程技术网

Java序列化与纯文本文件

Java序列化与纯文本文件,java,file,serialization,io,Java,File,Serialization,Io,我有点困惑。让我们假设我有一个游戏,其中包括一些瓷砖和球员。所有这些对象都需要保存,以便我以后可以启动游戏并恢复状态。我已经使用简单的文件(如XML文件或纯文本文件)完成了这项工作,我只需将平铺类型和坐标打印到文件中,然后根据文本文件中的信息读取、解析和创建新对象 我的问题是,当我可以将对象的属性保存到文本文件中时,为什么要序列化对象?很多游戏都是用文本文件来序列化它们的对象吗?有什么好处吗?我可以想象序列化保存了对象的一个实例,这样以后就不必像创建文本文件那样创建新的对象实例。但是我真的不知道

我有点困惑。让我们假设我有一个游戏,其中包括一些瓷砖和球员。所有这些对象都需要保存,以便我以后可以启动游戏并恢复状态。我已经使用简单的文件(如XML文件或纯文本文件)完成了这项工作,我只需将平铺类型和坐标打印到文件中,然后根据文本文件中的信息读取、解析和创建新对象


我的问题是,当我可以将对象的属性保存到文本文件中时,为什么要序列化对象?很多游戏都是用文本文件来序列化它们的对象吗?有什么好处吗?我可以想象序列化保存了对象的一个实例,这样以后就不必像创建文本文件那样创建新的对象实例。但是我真的不知道

在java中序列化的主要好处是,您不必像现在这样手动读取/写入文件。您只需要实现接口,java就可以处理它

下面是一个很好的Java序列化教程:

  • 我猜序列化将以二进制格式写入内容,因此它将消耗更少的资源 空格比相应的文本大

  • 您可以直接从序列化文件中获取java对象

  • 使用序列化时不会保存静态变量状态

  • 您有一个通过UID的版本控制
  • 很快
  • 你不需要额外的代码

  • 您正在序列化对象。您只是自己做,而不是使用库/框架来做。序列化没有什么好处,而且可能非常冗长。不过,最好使用某种“结构化”文件——CSV、XML、JSON等。JSON是一个很有吸引力的选择,因为有很好的工具可以从Java对象转换到Java对象(虽然只是一个很小的学习曲线)。第1点非常值得怀疑,Java序列化对象通常(总是?)比简单的自定义表单大(请参阅)。第3点也是没有意义的,因为像OP这样的自定义序列化可以选择是否要保存静态字段。