テキストファイルを取り込んで内容を文字列として読み取り、文字列を XOR し、新しい文字列を別のテキストファイルに書き込む JAR があります。
これは非常に簡単です。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 をもう一度テストして、同じ文字列が返されるかどうかをテストします)。 .
何が間違っているのか、なぜ違いが行動なのか分かりますか?