在Java中一次读取两行文本文件的最佳方法是什么?

BufferedReader in; String line; while ((line = in.readLine() != null) { processor.doStuffWith(line); } 

这是我逐行处理文件的方式。 但是,在这种情况下,我想在每次迭代中向处理器发送行文本。 (我正在处理的文本文件实际上将一条记录存储在两行上,所以我每次都会向处理器发送一条记录。)

在Java中执行此操作的最佳方法是什么?

为什么不读两行?

 BufferedReader in; String line; while ((line = in.readLine() != null) { processor.doStuffWith(line, in.readLine()); } 

这假设您可以依赖输入文件中的完整2行数据集。

 BufferedReader in; String line1, line2; while((line1 = in.readLine()) != null && (line2 = in.readLine()) != null)) { processor.doStuffWith(line1, line2); } 

或者如果你愿意,你可以连接它们。

我会重构代码看起来像这样:

 RecordReader recordReader; Processor processor; public void processRecords() { Record record; while ((record = recordReader.readRecord()) != null) { processor.processRecord(record); } } 

当然,在这种情况下,您必须以某种方式将正确的记录读取器注入此类,但这应该不是问题。

RecordReader的一个实现可能如下所示:

 class BufferedRecordReader implements RecordReader { BufferedReader in = null; BufferedRecordReader(BufferedReader in) { this.in = in; } public Record readRecord() { String line = in.readLine(); if (line == null) { return null; } Record r = new Record(line, in.readLine()); return r; } } 
Interesting Posts