Моя цель - читать только 50 строк за раз из текстового файла, печатать их в обратном порядке и хранить только 50 строк за раз в памяти.Наиболее эффективным из возможных способов.
Это код, который я придумал, но результат не такой, как ожидалось.Я проверил его с помощью входного файла из 104 строк.
Фактический вывод: он печатает строки 50 в строку 1, строки 101 в строку 52 (пропускается строка 51), строки 104 - 103 (пропускается строка 102),
Ожидаемый результат: Строка 50 - Строка 1, Строка 101 - Строка 51, Строка 104-102.
Я также не знаю, как изменить первый цикл while, чтобы он продолжал работать доконец файла, так как тестирование while (r.readLine! = null) также не сработало.
public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
Stack<String> s = new Stack<String>();
int i = 0;
int x = 0;
while (x < 5) {
for (String line = r.readLine(); line != null && i < 50; line = r.readLine()) {
s.push(line);
i++;
}
i = 0;
while (!s.isEmpty()) {
w.println(s.pop());
}
x++;
}
}