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

이는 입력 파일에 전체 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);
    }
}

물론이 경우 어떻게 든이 수업에 올바른 레코드 리더를 주사해야하지만 문제는 아닙니다.

레코드 리더의 하나의 구현은 다음과 같습니다.

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