0

我有一个 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 测试以测试我是否返回相同的字符串) .

知道出了什么问题,为什么不同之处在于行为?

4

1 回答 1

0

问题是我读取文件内容的方式。设法解决它。从文本文件中读取内容的代码如下:

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