计算java中的文件长度:FileReader与File.length

Rob*_*obz 2 java file filereader

为什么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();
Run Code Online (Sandbox Code Playgroud)

我在两个文件上使用了上面的代码.结果如下:

test.txt
 FileReader:  263742
 File.length: 265963
output.enc
 FileReader:  146360
 File.length: 212998
Run Code Online (Sandbox Code Playgroud)

Rya*_*art 6

fr_count是您从文件中读取的字符数.len是文件中的字节数.他们是两个非常不同的东西.例如,一些字符以多个字节表示,一些编码使用字节顺序标记.这两者都会产生字符数和文件中字节数之间的差异.