0

我有代码:

junk.writeUTF("Jim");
junk.writeInt(9304029);
junk.writeUTF("England");

junk.writeUTF("Bob");
junk.writeInt(99291933);
junk.writeUTF("Canada");

junk.seek(12);
String name = junk.readUTF();
int number = junk.readInt();
String city = junk.readUTF();

当我运行它时,我收到错误消息说它是空的。我明白为什么会发生这种情况,但我怎么知道要查找哪个字节,以便为 Bob 读取数据?seek(12) 给出空值。

4

1 回答 1

2

int不是 2 个字节,是 4 个。并且writeUTF写了一个 2 字节长度的前缀,所以总长度应该是 18。

如果我们考虑每条数据的偏移量:

            Offset
UTF length  0
Jim         2
9304029     5
UTF length  9
England     11

当你传入 12 时,它会尝试读取一个使用ng长度为 28263 的 UTF 字符串,这显然比你的文件长一点。

于 2013-10-17T00:13:32.047 回答