文字列で満たされたランダムアクセスファイルがあります(問題を説明するのに役立ちますが、実際には文字列ではないことはわかっています)。私がやりたいのは、特定の文字列、たとえば文字列#4を表示することです。整数や一般的にプリミティブなデータ型の場合はバイト長が固定されているため簡単ですが、前のすべてのバイトを合計することで正しいバイトを読み取ることができます。
すべての文字列に16文字の固定長を与えることでこの問題を解決できたので、「dog」という単語がある場合、RAFのこの単語は「dog」(dog + 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は読み取りたい値の数であり、修正は1つの文字列の文字(およびバイト)の数です。
2バイトで構成されているため、文字列の1つで余分なASCII文字(ポーランド語の文字)を使用するまで、すべてが正常に見えました。文字の長さは同じ-16でしたが、17バイトあり、すべてがバラバラになりました。
私に何ができる?