我在一个文件中将一条记录分成多行。识别记录结尾的唯一方法是当新记录以开头时。下面是示例。文件大小可以是5-10gb,我正在寻找一个高效的java逻辑来分割文件(不需要读取每一行),但是分割逻辑应该检查以新记录开始一个新文件,在这种情况下应该以“”开始。
添加了更多的细节,我只是寻找分裂的文件,而分裂的最后一条记录应该在一个文件中正确结束。
有人能建议一下吗?
HDR
ABCline1goesonforrecord1 //first record
line2goesonForRecord1
line3goesonForRecord1
line4goesonForRecord1
ABCline2goesOnForRecord2 //second record
line2goesonForRecord2
line3goesonForRecord2
line4goesonForRecord2
line5goesonForRecord2
ABCline2goesOnForRecord3 //third record
line2goesonForRecord3
line3goesonForRecord3
line4goesonForRecord3
TRL
2条答案
按热度按时间8yparm6h1#
我没有测试这个,但像这样的东西应该工作,你不是读取整个文件在内存中只有一行在一个时间,所以它应该不是坏的。
mitkmikd2#
所以,这就是你需要的代码。我测试了一个10gb的文件,需要64秒来分割文件
顺便说一句,扫描仪的解决方案也很有效。
关于没有读所有的台词,我不明白你为什么不想要这个。如果您选择不阅读所有行(这是可能的),那么,首先您将过度复杂的解决方案,其次我很肯定,您将失去性能,因为您必须纳入分裂的逻辑。