从Netbeans直接运行和从JAR运行时,XOR不同

时间:2013-10-03 10:02:23

标签: java

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

知道什么是错的,为什么差异就是行为?

提前致谢

1 个答案:

答案 0 :(得分:0)

感谢帮助人员。是的,问题是我在文件内容中读取的方式。管理解决它。从文本文件中读取内容的代码如下:

String content = new Scanner(new File(filename), "UTF-8").useDelimiter("\\A").next();
return content;