我有代码:
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)为空。
最佳答案
int
不是2字节,而是4。writeUTF
写入2字节长度的前缀,因此总长度应为18。
如果我们考虑每个数据的偏移量:
Offset
UTF length 0
Jim 2
9304029 5
UTF length 9
England 11
传入12时,它将尝试使用
ng
作为长度读取UTF字符串,长度为28263,显然比文件长一点。关于java - RandomAccessFile:获取Java.io.EOFException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19415965/