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

时间:2009-01-18 18:51:12

标签: java text-files fileparsing

BufferedReader in;

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

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

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

3 个答案:

答案 0 :(得分:12)

为什么不读两行?

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

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

答案 1 :(得分:10)

BufferedReader in;
String line1, line2;

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

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

答案 2 :(得分:0)

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

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