Java에서 한 번에 두 줄 씩 텍스트 파일을 읽는 가장 좋은 방법은 무엇입니까?
-
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;
}
}
제휴하지 않습니다 StackOverflow