冲突的人物数量

时间:2011-11-03 19:10:41

标签: java

我正在尝试查找给定文本文件中的字符数。

我尝试过同时使用扫描仪和BufferedReader,但结果却相互矛盾。通过使用扫描仪,我在添加新行字符后连接每一行。例如。像这样:

    FileReader reader = new FileReader("sampleFile.txt");
    Scanner lineScanner = new Scanner(reader);
    String totalLines = "";

    while (lineScanner.hasNextLine()){
        String line = lineScanner.nextLine()+'\n';
        totalLines += line;
    }
    System.out.println("Count "+totalLines.length());

这将返回我的文件的真实字符数,即5799

而我使用时:

 BufferedReader reader = new BufferedReader(new FileReader("sample.txt"));

 int i;
 int count = 0;
 while ((i = in.read()) != -1) {
    count++;
 }

 System.out.println("Count "+count);

我得到5892。

我知道如果只有一行,使用lineScanner将会关闭,但对于我的文本文件,我会得到正确的输出。

同样在记事本++中,文件长度(以字节为单位)为5892,但没有空格的字符数为5706.

2 个答案:

答案 0 :(得分:2)

您的文件的行可能会以\r\n而不是\n终止。这可能会导致您的不一致。

答案 1 :(得分:1)

您必须考虑文本文件中的换行符/回车符。这也算作一个角色。

我建议使用BufferedReader,因为它会返回更准确的结果。