为什么fr_count和len在下面的代码中会有所不同?
FileReader fr = new FileReader(filename);
int c;
long fr_count = 0;
while ( -1 != (c = fr.read()) )
fr_count++;
long len = new File(filename).length();
我在两个文件上使用了上面的代码。结果如下:
test.txt
FileReader: 263742
File.length: 265963
output.enc
FileReader: 146360
File.length: 212998
答案 0 :(得分:6)
fr_count
是您从文件中读取的字符数。 len
是文件中的字节数。他们是两个非常不同的东西。例如。一些字符以多个字节表示,一些编码使用byte order mark。这两种方法都会产生字符数和文件中字节数之间的差异。
答案 1 :(得分:3)
File.Length
返回文件中Bytes
的数量。计数FileReader.read()
告诉您文件中有多少个字符。