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);
}
这就是我逐行处理文件的方式。然而,在这种情况下,我想在每次迭代中向处理器发送两行文本。(我正在处理的文本文件基本上将一条记录存储在两行中,因此我每次都向处理器发送一条记录。)
在 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;
}
}