Я пытаюсь прочитать в файле .txt в java. Независимо от того, заканчивается ли это пустой строкой или нет, читатель не будет читать последнюю строку и программа не завершит работу.
public static ArrayList<String> readInput() {
// TODO Auto-generated method stub
ArrayList<String> input = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
// while (scanner.hasNextLine()) {
// String line = scanner.nextLine();
// if (line.equals("") || line.isEmpty()) {
// break;
// }
// input.add(line);
// System.out.println(line);
// }
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
while((line = reader.readLine()) != null && !line.isEmpty()) {
input.add(line);
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null,"File not found or is unreadable.");
}finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//PROGRAM WILL NOT GO BEYOND THIS POINT.
JOptionPane.showMessageDialog(null,"File has finished reading.");
return input;
Здесь я попробовал два метода. Один с буферизованным считывателем, а другой со сканером, но ни один не работает. Вот фрагмент файла .txt:
...some more lines...
33
0 0 0
1 0 0
0 1 0
34
0 0 0
1 0 0
1 0 0
35
0 1 0
0 1 0
0 0 1
36
1 0 0
0 1 0
0 1 0
Программа будет читать до второй последней строки. Так что это будет то, что я вижу:
...some lines...
0 0 1
36
1 0 0
0 1 0
и программа все еще будет работать. Он даже не будет вводить повторно, пока l oop (я проверял его с помощью println).
Даже если бы я добавил пустую строку после последней строки, вот так:
...some lines...
0 0 1
36
1 0 0
0 1 0
0 1 0
<a blank line>
Программа будет читать до последней строки чисел, не сможет повторно ввести l oop, и программа не прекратит работу.
...some lines...
0 0 1
36
1 0 0
0 1 0
0 1 0
Я пытался искать везде для решений, но не могу найти тот, который на самом деле решает эту проблему.
Предпочтительно, я хотел бы следовать сценарию 1, где я не заканчиваю текстовый файл пустой строкой.
также каждая строка файла .txt заканчивается новой строкой и не содержит конечных пробелов. Спасибо!