Проблемы с BufferedReader / PrintWriter?
Я использую BufferedReader и PrintWriter, чтобы просмотреть каждую строку входного файла, внести изменения в некоторые строки и вывести результат. Если строка не подвергается изменению, она просто печатается как есть в выходном файле. Однако по какой-то причине процесс заканчивается преждевременно. Код выглядит примерно так:
BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();
while(line!=null)
{
if(line is special)
do edits and p.println(edited_line);
else
p.println(line);
line = in.readLine();
}
Однако по какой-то странной причине этот процесс заканчивается преждевременно (фактически выводит половину строки) в самый конец моего входного файла. Есть ли очевидная причина для этого? Цикл while явно заканчивается нулем. И это ближе к концу моего 250k+ строки TXT-файла. Спасибо!
3 ответа
Где вы сбрасываете / закрываете свой PrintWriter или FileOutputStream? Если программа завершается, а это не делается, не все ваши результаты будут записаны.
Тебе нужно out.close()
(возможно p.flush()
а также?) в конце вашего процесса, чтобы закрыть файл выходного потока
В PrintWriter не включена автоочистка, поэтому вполне вероятно, что последний бит файла не сбрасывается до завершения программы.
Добавление p.flush()
после того, как ваш цикл должен сделать свое дело.