【问题标题】:Is it best to store something in memory or try to write to a file line by line ?最好将某些内容存储在内存中还是尝试逐行写入文件?
【发布时间】:2014-03-12 08:28:24
【问题描述】:

我现在有一个程序,它以映射的形式将多个 SQL 语句链接在一起。然后我使用 FileWriter 将此数据写入文件。

我想知道是否最好将我的 SQL 语句中的信息存储在字符串缓冲区中,然后直接写入文件,或者,最好在必要时逐行写入文件?

我实际上已经使用一个字符串缓冲区写入文件,但遇到了一个问题,一旦字符串缓冲区收集到超过大约 125000 个字符的值,程序就会崩溃。

【问题讨论】:

  • 到底是什么问题?这些 SQL 语句是从哪里来的,你可以超过 125k 个字符?
  • SQL 语句映射在一起 - 所以我从特定数据库调用 select *,然后对于特定列的结果集每一行的值(从 JTable 读取)然后调用读取每一行后不同的 SQL 语句,使用从所需列获得的值来检索所需的记录
  • 答案是肯定的……也不是。就整体性能而言,可能最多大约半兆,您最好使用单次写入。
  • 如果您在 125K 时崩溃,则怀疑崩溃是由于字符串缓冲区大小以外的其他原因造成的。

标签: java file-io stringbuffer


【解决方案1】:

在我看来,我总是喜欢先创建要保存在 StringBuffer 中的字符串,然后将其存储在文件中,这样我只需反序列化一次。这通常会为我带来性能提升。

这样做的另一个好处是可能出现严重错误的点更少,因此 a 将成为故障点。而使用 StringBuffer 通常只有一个故障点。

【讨论】:

  • 我认为我决定对 StringBuffer 中的字符数进行检查,如果超过某个阈值,将其保存到文件中,然后清除它,如果我想写再次,从文件读回数组列表,更新数组列表,然后将其写回——想法修改自stackoverflow.com/questions/289965/…
  • @Nathan - 你不应该读回文件。您应该打开它以“追加”并在末尾添加更多数据。
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 2016-03-24
相关资源
最近更新 更多