IO流序列化多次存储读取对象数据学习总结
首先给定一个存储的文件路径,然后定义一个集合用于存储对象实例。在循环中接收数据以参数形式传输给目标对象,然后构建对象实例并添加进集合中。
对象实例添加完成后进行序列化存储,首先创建一个Object输入流用于接收集合的数据,但由于读取数据时所用readobject方法只能读取一个对象数据,所以存储的文件中只能存在一个集合数据对象。
因此可以在存储之前进行一次文件内数据集合的更新,将原有数据读出再添加进入新构建的数据集合对象中,此举可保留原有数据及新增数据,并只产生一个数据集合对象。
由于第一次存储会因为文件中本身无数据则产生异常,所以可先判断文件是否为空,以File的length进行判断,若不为0,则判断不为空,才进行以上更新数据的操作。
构建好更新后的数据集合对象后,使用序列化存储进行存储即可。
使用序列化存储的对象首先要实现Serializable接口,否则无法序列化存储。
序列化存储可以存储对象实例数据,在对象实现Serializable接口后可以以集合或数组形式进行存储,方法即构建一个Object输出流,然后将构建好的对象用writeObject方法通过定义的文件路径写入文件进行存储。因为java中万物皆为对象,所以可以存储对象实例及数组,集合。
读取已存储进文件的对象数据,若为单例对象则只需用readObject方法读取数据并强转为原有数据类型即可。但若存储的是一个数组对象则需要使用下标循环取出。
若为集合对象,则需要先读取并转换为一个集合类型,然后放入迭代器,再用循环迭代器的方式取出对象数据。
序列化存储要点:
1.序列化的对象必须实现Serializable接口
2.序列化的存储在读取的时候只能读取一个对象
3.若到多次存储数据进入一个文件,则需要先读出原有数据并添加进新数据对象中,再进行写入,可保持数据更新并只有一个数据对象进入文件