BufferedWriter не сбрасывает данные

вот пример кода из приложения, над которым я работаю:

BufferedWriter bw=new BufferedWriter(new FileWriter(new File("abc.txt")));
StringBuilder sb = null;
ResultSet rs = pstmt.execute();
while(rs.next()){
  sb = new StringBuilder();
  createLine(rs,sb);
  bw.write(sb.toString());
}
bw.flush();
bw.close();

private void createLine(ResultSet rs, StringBuilder sb){
   //based on conditions append the columns to string builder
   sb.append(rs.getString("prodname"));
   // and goes on...
}

Теперь, когда я запускаю эту программу, я заметил, что было сгенерировано только 8 КБ файла, и программа зависает, как будто она ждет, пока что-то будет очищено. Я точно знаю, что при том количестве данных, которые извлекаются из базы данных, должен быть сгенерирован файл размером не менее 40-50 КБ. Решит ли проблему размещение оператора flush внутри цикла for?


person sridhar vasireddy    schedule 16.05.2014    source источник
comment
Сделанный. createLine только добавляет столбцы из набора результатов в StringBuilber.   -  person sridhar vasireddy    schedule 16.05.2014


Ответы (1)


Решит ли проблему размещение оператора flush внутри цикла for?

Нет, это только замедлит ход событий. Вам даже не нужен единственный вызов flush(), который у вас уже есть, так как он происходит автоматически, когда вы close().

Ваша проблема в другом.

person user207421    schedule 23.05.2014
comment
@downvoter Какое именно из этих утверждений неверно? Это решит проблему? Это не замедлит работу? Ему нужен звонок flush()? Это не происходит автоматически close()? Пожалуйста, прочитайте Javadoc. - person user207421; 10.11.2017