Проблемы с BufferedReader / PrintWriter? - PullRequest
5 голосов
/ 16 июня 2009

Я использую 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 ]

7 голосов
/ 16 июня 2009

Где вы сбрасываете / закрываете свой PrintWriter или FileOutputStream? Если программа закрывается, а это не сделано, не все ваши результаты будут записаны.

Вам нужно out.close() (возможно, также p.flush()?) В конце процесса, чтобы закрыть поток вывода файла

1 голос
/ 16 июня 2009

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

Добавление p.flush() после того, как ваш цикл while должен сработать.

1 голос
/ 16 июня 2009

Попробуйте добавить p.flush () после цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...