【问题标题】:BufferedWriter not flushing the dataBufferedWriter 不刷新数据
【发布时间】:2014-07-05 07:46:07
【问题描述】:

这是我正在开发的应用程序的示例代码:

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...
}

现在,当我执行这个程序时,我观察到只生成了 8kb 的文件并且程序挂起,就好像它在等待清除某些东西一样。我确信从数据库中检索到的数据量应该会生成一个至少 40-50kb 的文件。 将flush语句放在for循环中会解决问题吗?

【问题讨论】:

  • 完成。 createLine 仅将结果集中的列附加到 StringBuilber。

标签: java-io bufferedwriter


【解决方案1】:

将flush语句放在for循环中会解决问题吗?

不,它只会减慢速度。您甚至不需要您已经拥有的单个 flush() 呼叫,因为它会在您 close(). 时自动发生

你的问题出在其他地方。

【讨论】:

  • @downvoter 这些陈述中哪一个是不正确的?它会解决问题吗?它不会减慢速度吗?他确实需要flush() 电话吗?它不会在close() 上自动发生?请阅读 Javadoc。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多