我有一个JAR,它接受一个文本文件读取内容为字符串,XOR字符串并将新字符串写入另一个文本文件。
这非常简单。用于XOR的代码如下:
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和XOR测试以测试我是否返回相同的字符串)
知道什么是错的,为什么差异就是行为?
提前致谢
答案 0 :(得分:0)
感谢帮助人员。是的,问题是我在文件内容中读取的方式。管理解决它。从文本文件中读取内容的代码如下:
String content = new Scanner(new File(filename), "UTF-8").useDelimiter("\\A").next();
return content;