嗨团队,我正在尝试在二进制文件中查找字符串“Henry”并将字符串更改为不同的字符串。仅供参考,该文件是对象序列化的输出。原始问题在这里
我是搜索字节的新手,并想象这段代码会搜索我的 byte[] 并交换它。但它并没有接近工作它甚至没有找到匹配项。
{
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();
}