繁体   English   中英

Java:将对象数据成员写入文件的最佳方法是什么?

[英]Java: What is the best way to write object data members to a file?

我在Java项目的中间,要使其正常工作,我需要做的一件事情就是从磁盘写入和读取对象。 具体来说,我需要编写一个代码,然后再从单个RandomAccessFile加载给定对象的数据成员,并为每个对象添加固定大小的记录。 该文件表示具有固定大小的磁盘块的分区。

现在,我要做的是使用ByteBuffer将每个数据成员显式转换为字节。 然后,我将它们写到文件中,以便稍后重新加载数据以实例化具有相同数据值的新对象。 我对这种方法不满意的是,每个数据成员都必须显式转换并放入ByteBuffer ,然后再写入。 加载恰好相反,将所有字节转换回去并将它们存储在适当类型的对象中。

我上面使用的方法似乎过于复杂。 有更好的方法吗? 我一直在想的事情与我在C ++中可以做的事情类似。 过去,我很容易使用指向对象的指针从固定大小的索引记录中存储和重新加载对象数据,然后在使用reinterpret_cast将指针转换为const char *之后,使用ofstream (或类似方法)从那里写入所有字节。 。 使用ifstream (或类似的文件)加载文件非常简单,只需使用index * sizeOf(Foo)计算文件指针偏移量,然后在从文件读取到内存中之前进行查找。

在Java中是否有类似的方法?

听起来您正在寻找的是一个ObjectOutputStream ,它允许您将任意(但必须实现Serializable )对象序列化为字节数组(或在这种情况下为流),然后可以将其写入磁盘。 它本身不能满足您的随机访问需求,但这将是不需要自定义适配器的解决方案的重要组成部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM