现实世界从文件Java中读取

时间:2014-03-09 00:47:16

标签: 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!   
…  

每次读取一行,我相信scan和bufferedReader之间没有太大区别,因为扫描仪也有1k缓冲区。我可以这样做:

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

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

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

1 个答案:

答案 0 :(得分:3)

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

NB BufferedReader有一个 4k 缓冲区,所以你唯一明白的理由是“没有多大区别”就在窗外了。 Scanner是具有令牌化功能的更高级API的事实似乎也逃过了你。