Правильное использование BufferedReader.readLine () в цикле while

Поэтому у меня возникла проблема с чтением текстового файла в моей программе. Вот код:

     try{
        InputStream fis=new FileInputStream(targetsFile);
        BufferedReader br=new BufferedReader(new InputStreamReader(fis));

        //while(br.readLine()!=null){
        for(int i=0;i<100;i++){
            String[] words=br.readLine().split(" ");
            int targetX=Integer.parseInt(words[0]);
            int targetY=Integer.parseInt(words[1]);
            int targetW=Integer.parseInt(words[2]);
            int targetH=Integer.parseInt(words[3]);
            int targetHits=Integer.parseInt(words[4]);
            Target a=new Target(targetX, targetY, targetW, targetH, targetHits);
            targets.add(a);
        }
        br.close();
    }
    catch(Exception e){
        System.err.println("Error: Target File Cannot Be Read");
    }

Файл, из которого я читаю, содержит 100 строк аргументов. Если я использую цикл for, он работает отлично. Если я использую оператор while (закомментированный над циклом for), он останавливается на 50. Существует вероятность того, что пользователь может запустить программу с файлом, содержащим любое количество строк, поэтому мой текущий результат реализации цикла выиграл ' т работа.

Почему линияwhile(br.readLine()!=null) остановиться на 50? Я проверил текстовый файл, и нет ничего, что могло бы его повесить.

Я не получаю ошибок от try-catch, когда использую цикл while, поэтому я в тупике. У кого-нибудь есть идеи?

Ответы на вопрос(6)

Ваш ответ на вопрос