2011-09-04 150 views
2

爲什麼fr_count和len在下面的代碼中會有所不同?在java中計算文件長度:FileReader與File.length

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 
+3

用'FileInputStream'替換'FileReader'並開啓自己。 – BalusC

回答

6

fr_count是您從文件中讀取的字符數。 len是文件中的字節數。他們是兩個完全不同的東西。例如。一些字符以多個字節表示,並且一些編碼使用byte order mark。這兩種方法都會導致文件中字符數和字節數的差異。

3

File.Length返回文件中的Bytes的數量。計數FileReader.read()告訴你文件中有多少個字符。