0

我想将文件描述符移动到记录的开头。我有一个名为 Record 的类。例如,根据参数,假设 4,我想访问 4. 记录的开头。这样,我想我会使用seek方法。但我需要记录的大小。在c语言中,我可以说去

f seek(3*(size of(Record)))

但在 Java 中,怎么找不到如何学习我的 Record 大小。那么我该怎么做呢?

4

3 回答 3

1

您可以将对象序列化为 ByteArrayOutputStream 然后调用流的 toByteArray() 方法来获取字节数组本身,然后您可以通过调用数组的长度轻松获取以字节为单位的大小。
字节数组是您要写入文件的内容。
如果您查看http://www.coyotegulch.com/products/itzam/java/index.html,您会发现一个数据库,其基本实现是文件中任意对象的链接列表。然后,作者继续在该索引方案之上使用索引方案进行键控访问。
我以前用过它并且它有效 - 它可能会比你自己写。

于 2011-06-05T01:59:50.713 回答
0

如何首先将记录放入跳过列表数据结构中,然后将跳过列表作为文件偏移量与记录一起写入磁盘。您可以先遍历数据以找到它们的序列化长度。

于 2011-06-04T17:25:26.540 回答
0

你用什么来写数据?如果您使用 ObjectOutputStream,则无法知道记录有多大,并且您无法在 ObjectOutputStream 写入的文件中随机查找和加载对象。

于 2011-06-04T16:22:39.710 回答