Frage

BufferedReader in;

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

Dies ist, wie ich eine Datei line-by-line verarbeiten würde. In diesem Fall mag ich jedoch zwei Textzeilen in jeder Iteration an den Prozessor senden. (Die Textdatei Ich bin Verarbeitung im Wesentlichen speichert einen Datensatz auf zwei Linien, so dass ich einen einzelnen Datensatz an den Prozessor jedes Mal zu senden.)

Was ist der beste Weg, dies zu tun, in Java?

War es hilfreich?

Lösung

Warum liest nicht nur zwei Zeilen?

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

Dies setzt voraus, dass Sie sich auf mit vollem 2-zeiliges Datensätze in Ihrer Eingabedatei verlassen können.

Andere Tipps

BufferedReader in;
String line1, line2;

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

Oder Sie könnten sie verketten, wenn man wollte.

Ich würde Code Refactoring irgendwie wie folgt aussehen:

RecordReader recordReader;
Processor processor;

public void processRecords() {
    Record record;

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

Natürlich in diesem Fall müssen Sie irgendwie richtige Datensatz Leser injizieren in dieser Klasse, aber das sollte kein Problem sein.

Eine Implementierung des RecordReader könnte wie folgt aussehen:

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;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top