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

Программисты JAVA общаются здесь
Ответить
Anonymous
 Правильное использование BufferedReader.readLine() в цикле while

Сообщение Anonymous »

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

Код: Выделить всё

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. Существует вероятность того, что пользователь сможет запустить программу с файлом, имеющим любое количество строк, поэтому моя текущая реализация цикла for выиграет Это не работает.
Почему строка while(br.readLine()!=null) останавливается на 50? Я проверил текстовый файл, и нет ничего, что могло бы его зависнуть.
Я не получаю никаких ошибок от try-catch, когда использую цикл while, поэтому я в тупике. У кого-нибудь есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/134 ... p-properly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»