0

テキストファイルを取り込んで内容を文字列として読み取り、文字列を 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 をもう一度テストして、同じ文字列が返されるかどうかをテストします)。 .

何が間違っているのか、なぜ違いが行動なのか分かりますか?

4

1 に答える 1

0

問題は、ファイルの内容を読み込む方法です。なんとか解決しました。テキストファイルからコンテンツを読み取るコードは次のとおりです。

String content = new Scanner(new File(filename), "UTF-8").useDelimiter("\\A").next();
return content;
于 2013-10-04T02:45:07.880 に答える