【发布时间】:2011-11-04 03:31:28
【问题描述】:
我正在尝试查找给定文本文件中的字符数。
我尝试同时使用扫描仪和 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。
【问题讨论】:
-
那么你的问题到底是什么?
-
@PTBG 我的问题是为什么我使用扫描仪或缓冲阅读器会得到不同的答案?
-
好的,我刚刚检查过了,差异是由于扫描仪没有计算 '\r'。如果我在 linux 上运行这段代码,我会得到不同的输出吗?
标签: java