BufferedReader in;

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

这是我将如何处理线由行的文件。在这种情况下,然而,我想发送的 2 的文本行中每次迭代的处理器。 (我处理该文本文件存储基本上两行上的一个记录,所以每次我送的单个记录到处理器。)

什么是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;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top