3
BufferedReader in;

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

これは、ファイルを行ごとに処理する方法です。ただし、この場合、反復ごとに2行のテキストをプロセッサに送信したいと考えています。(私が処理しているテキスト ファイルは基本的に 2 行で 1 つのレコードを格納するため、毎回 1 つのレコードをプロセッサに送信しています。)

Javaでこれを行う最良の方法は何ですか?

4

3 に答える 3

12

2行だけ読んでみませんか?

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

これは、入力ファイルに完全な 2 行のデータ セットがあることを前提としています。

于 2009-01-18T18:56:59.217 に答える
10
BufferedReader in;
String line1, line2;

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

または、必要に応じてそれらを連結することもできます。

于 2009-01-18T19:04:43.663 に答える
0

コードをリファクタリングして、次のようにします。

RecordReader recordReader;
Processor processor;

public void processRecords() {
    Record record;

    while ((record = recordReader.readRecord()) != null) {
        processor.processRecord(record);
    }
}

もちろん、その場合、このクラスに正しいレコードリーダーを何らかの方法で挿入する必要がありますが、それは問題にはなりません。

RecordReader の 1 つの実装は次のようになります。

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;
    }
}
于 2009-01-18T22:11:17.840 に答える