在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; } }