java - 现实世界从 Java 文件中读取

标签 java scalability java.util.scanner bufferedreader

如果有一个包含大量记录的输入文件,每条记录为一行,每条记录由一个id号、记录创建时间和记录内容组成。那么读取和解析文件的最佳方法是什么?

例如输入为:

123-456-789   1:23pm Jan 4, 2014   I AM THE CONTENT!  
987-654-321   3:21pm Apr1, 2014    I AM THE CONTENT TOO!   
…  

To read one line each time, I believe there is no much difference between scanner and bufferedReader because scanner also has 1k buffer. So may I do:

Scanner scan = new Scanner(new File("filename"))?

然后,在我得到一行后,我应该创建另一个扫描仪对象来解析该行并获取每个字段(我可以将该行作为扫描仪的输入)吗?或者还有其他更好的解决方案吗?

对于经验丰富的程序员来说,在现实世界中读取和解析这样一个包含大量记录的文件的最佳方法(快速、更好的性能)应该是什么?谢谢!

最佳答案

除非“吨”意味着数亿行,否则它不太可能对您使用的任何显着差异产生任何显着差异,但您只需要一个 Scanner 对象来完成此任务,而不是每行一个。

NB BufferedReader 有一个 4k 缓冲区,因此您认为“没有太大区别”的唯一理由是不可能的。事实上,Scanner 是一个具有标记功能的高级 API,您似乎也没有意识到这一点。

关于java - 现实世界从 Java 文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22277051/

相关文章:

java - WebLogic Toplink(其 xml 解析器?)配置问题

java - Spark java : java. lang.IllegalArgumentException:对象不是声明类的实例

java - 从字符集创建新字符串会抛出 NoSuchMethodError (Android)

node.js - 跨多个核心/服务器扩展 Node.JS

java - 如何使用扫描仪跳过读取一行

java - 将数据放入 map 时 Hazelcast、HazelcastSerializationException

postgresql - 在 Postgres 中对大表进行分区的标准和策略

architecture - 在决定是复制还是分发以支持可扩展性时应考虑什么?

java - 代码中的计算给出了奇数答案,小数点旁边有很多数字

java - 从txt文件读取数据,创建对象,添加到集合