我有代码:
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)给出null。
答案 0 :(得分:2)
int
不是2个字节,它是4.而writeUTF
写入一个2字节长度的前缀,因此总长度应为18。
如果我们考虑每个数据的偏移量:
Offset
UTF length 0
Jim 2
9304029 5
UTF length 9
England 11
当您传入12时,它将尝试使用ng
作为长度读取UTF字符串,即28263,这显然比您的文件长一点。