2012-11-01 4 views
0

텍스트 파일을 읽고 다른 여러 개체를 만들 때 입력을 사용하려고합니다. 파일이 비어있는 후에도 계속 읽고 싶지는 않습니다. 따라서 파일에서 원하는 지점까지 읽은 다음 파일을 읽고 다음 줄을 읽고 null을 테스트하는 isEmpty() 메서드가 있습니다.EOF 확인 및 Java에서 줄 건너 뛰기

문제가 있다면 비어 있지 않으면 파일을 읽으려고하지만 다음 줄에서 읽는 것입니다. 즉, 테스트 할 첫 번째 줄을 읽었지만 다시 읽을 수는 없습니다.

현재 나의 생각은 더미 오브젝트를 생성하여이를 테스트하고 실제로 사용되는 동일한 두 번째 오브젝트를 사용하는 것입니다. 하지만 이것은 쓸데없는 것 같고 더 좋은 방법이 있어야한다고 생각합니다 .... 모두에게 감사드립니다!

참고 : 읽는 방법은 비어있는 확인 방법과 다릅니다. 객체의 메서드 전체에서 동일한 bufferedReader를 사용하고 있습니다. 그렇지 않으면 사용자에게 파일 이름을 다시 입력하라는 메시지가 표시되기 때문에 필요하지 않습니다.

+0

inb4 사용 스캐너 (파일 파일명) '(scan.hasNext()) { 문자열 str = scan.next(); makeSandwich (str); }' –

답변

0

은 왜 BufferedReader 관용구에 충실하지 않습니다 아래 방법을 사용하여에 관심이있을 수

? 파일이 비어 있는지 묻는 대신 빈 항목이 아닌 경우 다음 항목을 가져오고 직접 다음 항목을 요청하고 더 이상 항목이 없으면 메서드가 null을 반환하도록합니다. 훨씬 더 간단 :

while ((line = reader.readLine()) != null) { 
    ... 
} 

그렇지 않으면, 당신은 앞으로 몇 줄을 읽고, 귀하의 현재 위치를 표시하기 위해 mark()를 사용할 수있는 다음 reset() 당신의 표시로 돌아갑니다.

+0

다른 것들 때문에 read() 메서드와는 별도의 방법으로이 검사를해야하기 때문에 내가 말한 첫 번째 작업을 수행 할 수 없습니다. 그러나 두 번째 아이디어는 좋은 생각입니다. 나는 그 방법의 몇 가지 예를 온라인으로 찾으려고 노력해야한다 ... 고마워! –

+0

필자가 이해할 수는 있지만 (필자가 잘못되었을 수도 있음) 파일에 여러 가지 내용이 저장되어 있으며 각 내용을 개별적으로 읽고 나중에 비어있는 파일을 삭제하는 기능이 있습니다. 매번 파일을 끝까지 읽지 않습니다. – Krease

+0

isEmpty를 사용하면 프로그램이 새 객체를 읽고 작성하지 않도록 알리는 것입니다 (이 작업을하지 않으면 모든 필드에서 null로 객체를 만들기 시작합니다) –

0

RandomAccessFile을 사용하고 싶다고 생각하고 있습니다.이 기능은 건너 뛰기 기능을 지원하며 뒤로 이동할 수 있습니다.

void seek(long pos) 
    int skipBytes(int n) 
    String readLine() 
+0

어쩌면 내가 ... 이것에 대해 더 알아야만합니까? –

+0

"나는이 말을했다." –