我有一个充满字符串的随机访问文件(我知道它们不是真正的字符串,尽管它会帮助我解释问题)。我想做的是查看某个字符串,比如说字符串#4。虽然对于整数和通常的原始数据类型来说这很简单,因为它们具有固定的字节长度,我可以通过总结所有先前的字节来读取正确的字节。
我设法通过给所有字符串一个 16 个字符的固定长度来解决这个问题,所以如果我有“狗”这个词,那么 RAF 中的这个词是“狗”(狗 + 13 个空格)并且字节长度是也固定了。同样,我可以使用以下方法轻松读取正确的值:
static String loadOne(int n) throws IOException {
raf = new RandomAccessFile(file, "rw");
raf.seek((n-1)*(fix+2));
String x = raf.readUTF();
return x;
}
其中n是我要读取的值的数量,而fix是一个字符串的字符数(和字节数)。
一切似乎都很好,直到我在其中一个字符串中使用了一个额外的 ASCII 字符——一个波兰字母——因为它由 2 个字节组成。字符长度仍然相同 - 16,但有 17 个字节,整个事情都崩溃了。
我能做些什么?