Когда очищать BufferedWriter

В Java-программе (Java 1.5) у меня есть BufferedWriter, который оборачивает Filewriter, и я вызываю write () много раз ... Полученный файл довольно большой ...

Среди строк этого файла некоторые из них неполные ...

Нужно ли вызывать flush каждый раз, когда я что-то пишу (но я подозреваю, что это будет неэффективно), или использовать другой метод BufferedWriter, или использовать другой класс ...?

(Поскольку у меня есть миллионы строк, я хочу иметь что-то весьма эффективное.) Что было бы идеальным моментом «промывки»? (когда я достигну емкости BufferedWriter) ...

В этом:

try {
  analysisOutput = new BufferedWriter(new FileWriter(
      "analysisResults", true));
  analysisOutput.newLine();
  analysisOutput.write("Processing File " + fileName + "\n");
} 
catch (FileNotFoundException ex) {
  ex.printStackTrace();
} 
catch (IOException ex) {
  ex.printStackTrace();
}

Пишу:

private void printAfterInfo(String toBeMoved,HashMap<String, Boolean> afterMap, Location location)
  throws IOException {
    if(afterMap != null) {
      for (Map.Entry<String, Boolean> map : afterMap.entrySet()) {
        if (toBeMoved == "Condition") {
          if (1 <= DEBUG)
            System.out.println("###" + toBeMoved + " " + location + " "
                + conditionalDefs.get(conditionalDefs.size() - 1)
                + " After " + map.getKey() + " "
                + map.getValue() + "\n");

          analysisOutput.write("###" + toBeMoved + " " + location + " "
              + conditionalDefs.get(conditionalDefs.size() - 1)
              + " After " + map.getKey() + " " + map.getValue()
              + "\n");
        } else {
          if (1 <= DEBUG)
            System.out.println("###" + toBeMoved + " " + location + " "
                + map.getKey() + " After " 
                + map.getValue() + "\n");
          if (conditionalDefs.size() > 0)
            analysisOutput.write("###" + toBeMoved + " " + location + " "
                + conditionalDefs.get(conditionalDefs.size() - 1) + " "
                + map.getKey() + " After " + map.getValue()
                + "\n");
          else
            analysisOutput.write("###" + toBeMoved + " " + location + " " + map.getKey() + " After " + map.getValue() + "\n");


        }
      }
    }

Я только что выяснил, что строки, которые являются неполными, это те, что были перед «Обработка файла» ... поэтому это происходит, когда я переключаюсь с одного файла, который я анализирую, на другой ...

Закрытие:

dispatch(unit);

try {
  if (analysisOutput != null) {
    printFileInfo();
    analysisOutput.close();
  }
} 
catch (IOException ex) {
  ex.printStackTrace();
}

Иногда информация, распечатанная printFileInfo, не появляется в файле результатов ...

Ответы на вопрос(3)

Ваш ответ на вопрос