Длина моего байтового массива не равна размеру файла .txt

Итак, в основном то, что я пытаюсь сделать, это заставить JProgressBar перейти от 0 до 100%, где 100% - это полностью прочитанный файл .txt, содержащий 9999 строк слов.

Я пытаюсь сделать это, сохраняя огромную строку, сегментированную на байты, в массив байтов и обновляя JPBar с длиной массива байтов.

К моему удивлению, JProgressBar остановился на 91%. Позже я решил распечатать значения и понял, что длина файла примерно на 10000 больше, чем длина массива байтов.

Может ли кто-нибудь объяснить мне, почему это так и как я могу сделать это правильно? Я понимаю, что мне, скорее всего, не хватает понятия о чтении и подсчете символов. Фрагмент кода ниже.

Спасибо!

bar.setMinimum(0);
bar.setMaximum((int)file.length());

try{
     while((check = reader.readLine()) != null){

         words = words + check + "\n";
         stringCount = words.getBytes();
         bar.setValue(stringCount.length);

     }      
  }catch(Exception e){}

  System.out.println(stringCount.length);
  System.out.println(file.length());

person Nikola    schedule 05.03.2016    source источник


Ответы (1)


Содержимое дополнительного файла, скорее всего, является другой частью окончаний строк в стиле Windows. Стандартные окончания строк в файлах в Windows — \r\n, но ваша строка в памяти содержит только \n. Это приведет к накоплению разницы в 1 символ на окончание строки, и это время 9999 строк соответствует разнице, о которой вы сообщаете.

person Douglas    schedule 05.03.2016
comment
Спасибо! Это исправило :) - person Nikola; 06.03.2016