こんにちはチーム、バイナリファイルで文字列「Henry」を見つけて、その文字列を別の文字列に変更しようとしています。参考までに、ファイルはオブジェクトのシリアル化の出力です。元の質問はこちら
私はバイトを検索するのが初めてで、このコードが私のバイト[]を検索して交換すると想像しました。しかし、それは動作に近づくことはなく、一致するものさえ見つかりません。
{
byte[] bytesHenry = new String("Henry").getBytes();
byte[] bytesSwap = new String("Zsswd").getBytes();
byte[] seekHenry = new byte[bytesHenry.length];
RandomAccessFile file = new RandomAccessFile(fileString,"rw");
long filePointer;
while (seekHenry != null) {
filePointer = file.getFilePointer();
file.readFully(seekHenry);
if (bytesHenry == seekHenry) {
file.seek(filePointer);
file.write(bytesSwap);
break;
}
}
}
さて、私はbytesHenry==seekHenry
問題を見て、に交換しますArrays.equals( bytesHenry , seekHenry )
5 バイトを読み取るたびに、-4 バイト位置ずつ移動する必要があると思います。
今見つけたビンゴ
while (seekHenry != null) {
filePointer = file.getFilePointer();
file.readFully(seekHenry);;
if (Arrays.equals(bytesHenry,
seekHenry)) {
file.seek(filePointer);
file.write(bytesSwap);
break;
}
file.seek(filePointer);
file.read();
}