有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中可以随机访问对象吗?

基本上我有一个字符串对象的文件。我使用Java ObjectOutputStream来存储对象。是否可以随机访问对象(字符串),比如说,如果我想访问第11个对象,我可以以某种方式跳转到该位置,而不必使用readObject()11次循环到该位置。如果我想跳回去,我也可以这样做,不必从头再来。谢谢

正如所建议的,我想我可以用skipBytes()方法实现某种随机访问。虽然我不能保证我的对象是固定大小的,但如果我能在文件中保留这些对象的位置数组,我可以使用该数组作为索引,并使用skipBytes()进行随机访问。所以问题依然存在,不管怎样,我可以在写东西的时候知道物体的大小,这样我就可以以某种方式记录物体的位置了


共 (3) 个答案

  1. # 1 楼答案

    唯一的方法是将对象分别存储在它们自己的流中,或者存储在同一个文件中,或者存储在不同的文件中

    最简单的方法可能是将对象存储在一个列表中,然后一次性读取该列表,然后随机访问该列表

  2. # 2 楼答案

    这在ObjectInputStream中是不可能的,如果需要随机访问,则需要先将所有对象读入支持随机访问的集合/数组

  3. # 3 楼答案

    使用ObjectOutputStream存储字符串对象完全是过火了。您已经考虑过使用起始位置索引。那么,为什么不直接使用FileOutputStream将字符串存储到文件中呢?或者使用固定长度编码(其中字节数==字符串长度,可能是*2)将其包装在OutputStringWriter中,或者对每个字符串单独使用toBytes(encoding)并记录生成的字节数组的长度