Запись с файла в ArrayList

Необходимо записать данные с файла в ArrayList, во всех примерах, где происходит запись в файл, используют проверку

String line = bufferReader.readLine();
while (line != null) {...}

Первое сомнение, почему в примерах он не работает бесконечно, если файл был не пустой. Попробовал реализовать, но у меня работает вечно, как можно сделать проверку на конец файла?

public static void readFromFile(String path, String filename) throws IOException {
    ArrayList<String> ip = new ArrayList<>();
    try {
        File file = new File(path + "\\" + filename);
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        ip.add(br.readLine());
        while(!ip.isEmpty()) {
            ip.add(br.readLine());
        }

    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}

Ответы (1 шт):

Автор решения: Иван Горбатов

Можно вот так прочитать все строки

List<String> strings = Files.readAllLines(file.toPath());
→ Ссылка