Каков наилучший способ чтения текстового файла двумя строками в Java?

StackOverflow https://stackoverflow.com/questions/455695

  •  19-08-2019
  •  | 
  •  

Вопрос

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

Предполагается, что во входном файле можно использовать полные двухстрочные наборы данных.

Другие советы

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