подсчет длины файла в java: FileReader против File.length - PullRequest
2 голосов
/ 04 сентября 2011

Почему 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

Ответы [ 2 ]

6 голосов
/ 04 сентября 2011

fr_count - количество символов, которое вы читаете из файла. len - количество байтов в файле. Это две совершенно разные вещи. Например. некоторые символы представлены в нескольких байтах, а некоторые кодировки используют знак порядка байтов . И то и другое будет учитывать разницу между количеством символов и количеством байтов в файле.

3 голосов
/ 04 сентября 2011

File.Length возвращает число Bytes в файле.Подсчет FileReader.read() показывает, сколько символов в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...