【发布时间】:2012-09-04 05:17:02
【问题描述】:
我正在从事一个项目,该项目涉及读取和处理包含某些个人的各种数据的巨大 .txt 文件。
多个文件将按单个 ID(存在于所有文件中)读取和排序,然后合并,即从分配给同一 ID 的所有文件中检索所有条目。换句话说,每个人在每个文件中都可以有多个条目(即行)。我需要检索我找到的关于一个 ID 的所有信息,将其存储起来,然后传递给下一个。
到目前为止,我已经尝试过 FileChannel、FileInputStream 和 MappedFileBuffer,但显然最适合我的情况是 FileInputStream 和 BufferedReader,为了比较它们,我发现推荐使用 Collection.sort() .一个重要的问题是我不知道要使用该应用程序的 PC 的性能,并且文件可能大于 2GB。任何帮助将不胜感激。
【问题讨论】:
-
对数据库有限制吗?
-
每个 ID 的预期行数和所有文件的 ID 总数是多少
-
@KARASZIIstván 对数据库没有限制,但文件的处理是在中间步骤中完成的(在每个步骤中,可能需要新的排序,具体取决于要遵循的工作流程和中间输入对于应用程序中的其他模块)。我想把它全部用 Java 编码,而不插入任何 SQL 语句或类似的东西,因为该应用程序稍后将只传递给 Java 开发人员......所以这几乎是一个请求
-
@每个 ID 的预期行数在所有文件中不会超过 500,并且 ID 的数量超过 2 - 300 万。
标签: java performance sorting io large-data