我想将文件描述符移动到记录的开头。我有一个名为 Record 的类。例如,根据参数,假设 4,我想访问 4. 记录的开头。这样,我想我会使用seek方法。但我需要记录的大小。在c语言中,我可以说去
f seek(3*(size of(Record)))
但在 Java 中,怎么找不到如何学习我的 Record 大小。那么我该怎么做呢?
我想将文件描述符移动到记录的开头。我有一个名为 Record 的类。例如,根据参数,假设 4,我想访问 4. 记录的开头。这样,我想我会使用seek方法。但我需要记录的大小。在c语言中,我可以说去
f seek(3*(size of(Record)))
但在 Java 中,怎么找不到如何学习我的 Record 大小。那么我该怎么做呢?
您可以将对象序列化为 ByteArrayOutputStream 然后调用流的 toByteArray() 方法来获取字节数组本身,然后您可以通过调用数组的长度轻松获取以字节为单位的大小。
字节数组是您要写入文件的内容。
如果您查看http://www.coyotegulch.com/products/itzam/java/index.html,您会发现一个数据库,其基本实现是文件中任意对象的链接列表。然后,作者继续在该索引方案之上使用索引方案进行键控访问。
我以前用过它并且它有效 - 它可能会比你自己写。
如何首先将记录放入跳过列表数据结构中,然后将跳过列表作为文件偏移量与记录一起写入磁盘。您可以先遍历数据以找到它们的序列化长度。
你用什么来写数据?如果您使用 ObjectOutputStream,则无法知道记录有多大,并且您无法在 ObjectOutputStream 写入的文件中随机查找和加载对象。