一次有几个FileOutputStream?

时间:2013-11-15 15:04:10

标签: java sql

情况是:

  1. 我有一个带有记录的csv文件(通常是10k但最多1m的记录)
  2. 我将处理每条记录(非常基本的算术,每条记录有5条基本选择查询到数据库)
  3. 每个记录(现在已处理)将被写入文件但不是每次都是同一个文件。可以将记录写入另一个文件。
  4. 基本上我有1个输入文件但有几个可能的输出文件(大约1-100个可能的输出文件)。

    这个过程本身是基本的,所以我专注于如何处理记录。

    哪种选择适合这种情况?

    1. 存储几个代表每个可能输出文件的List,然后最后逐个编写每个List?
    2. 为避免几个非常大的List,每次处理完每条记录后,我会立即将其写入各自的输出文件。但这需要我一次打开流。
    3. 请赐教我这个。感谢。

1 个答案:

答案 0 :(得分:2)

第二个选项是可以的:按需创建文件输出流,并在需要时保持它们打开(例如,在Map中跟踪它们)。

操作系统可能限制它允许的打开文件句柄数,但这些数字通常远远超过几百个文件。

第三种选择: 你也可以追加到文件,FileOutputStream允许在构造函数中使用该选项:

new FileOutputStream(File file, boolean append) 

这比保持FileOutputStream打开效果要差,但效果也一样。