2017-08-19 22 views
1

我们有两种类型的文件如何找到大文本文件中的差异?

  1. 单个大容量文件,这将有有一个预约码的一些记录的 - 该文件大小约为20 MB

    AMMA-07 /二千零十七分之一十七12:02: 06-EZZE20170819010101

    AMMA-07 /二千零十七分之十七12:02:06-EZZE20170819020202

  2. 设置的多个文件具有像下面的记录 - 这个文件将有大约20K-30K记录

    000003 | EZZE20170819010101 | 16082017 |您好迈克尔

    000003 | EZZE20170819070707 | 16082017 |您好杰克逊

我必须列出在单独的文件(EZZE20170819020202和EZZE20170819070707)不匹配的记录。

文件的大小很大,我需要分割每条记录才能获得与其他文件中的代码匹配的代码,我担心性能和CPU利用率。

是否有任何策略或任何现有库(Java或任何其他技术)提供类似的功能?

+4

20 MB =巨大?什么操作系统,多少内存和你有什么CPU,你担心?试图简单地直接实施它? –

+1

Askig对于图书馆来说是无关紧要的。 –

+1

你试过正则表达式吗? – techprat

回答

0

如果你使用了一个尺寸适当的缓冲区,我不应该有任何内存问题(我至少会使用1-20 MB来确保HD主要是连续读取和写入)。

如果你有两个以上的文件在同一时间,你必须使用线程来减少时间。

如果速度有问题,也可以查看java.nio包 - 它会比java.io库快。 您可以检查的网站https://dzone.com/articles/java-sequential-io-performance

+0

为什么不让OS文件系统驱动程序缓冲文件?您链接的网站清楚地显示缓冲类没有太多性能优势。在400 MB文件上,性能更差。 –

+0

@ dr-geek:谢谢你完成了。在以上答案中添加了我的评论。 –