我有一个 JAR,它接收一个文本文件,将内容读取为字符串,对字符串进行异或并将新字符串写入另一个文本文件。
这很简单。用于异或的代码如下:
public String XORStr(String key, String data){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < data.length(); i++)
sb.append((char)(data.charAt(i) ^ key.charAt(i % key.length())));
String result = sb.toString();
return result;
}
用于从文本文件中读取内容的代码:
private static String readEntireFile(String filename) throws IOException {
FileReader in = new FileReader(filename);
StringBuilder contents = new StringBuilder();
char[] buffer = new char[4096];
int read = 0;
do {
contents.append(buffer, 0, read);
read = in.read(buffer);
} while (read >= 0);
return contents.toString();
}
现在,当我通过从 Netbeans 运行来测试它时,它可以正常工作。现在我从 dist 文件夹中取出 JAR 并单独运行,我注意到对于某些文本文件,字符串的一部分错误地异或并显示为乱码(我再次通过 XOR 和 XOR 测试以测试我是否返回相同的字符串) .
知道出了什么问题,为什么不同之处在于行为?