개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.13 08:08

SplFileObject eof() 메서드 사용 오류

목록
  • Dart광 1일 전 2025.04.13 08:08
  • 10
    1
안녕하세요 선생님, SplFileObject를 사용하여 파일을 읽어 왔는데, eof() 메서드를 사용하여 파일의 끝을 확인했을 때 오류가 발생하고 있습니다.

php

$file = new SplFileObject('test.txt');

while (!$file->eof()) {

    echo $file->fgets();

}



위의 코드는 test.txt 파일의 내용을 읽어와서 화면에 출력하는 코드입니다. 하지만 eof() 메서드를 사용하여 파일의 끝을 확인했을 때 오류가 발생하고 있습니다.

-eof() 메서드는 파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시키지 않나요?

파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시켜야 하는가요?

또한, eof() 메서드는 파일의 끝을 확인할 때마다 파일의 내용을 메모리에 로드하는가요?

파일의 내용을 메모리에 로드하지 않나요?

위의 질문이 답변을 통해 해결되었으면 합니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    SplFileObject의 eof() 메서드는 파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시키지 않습니다. eof() 메서드는 파일의 현재 위치를 확인하여 끝인지 아닌지를 판단합니다.

    파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시키지 않습니다. 하지만, fgets() 메서드를 호출할 때마다 파일 포인터의 위치가 이동됩니다. 따라서, eof() 메서드를 호출하기 전에 fgets() 메서드를 호출해야 합니다.

    eof() 메서드는 파일의 내용을 메모리에 로드하지 않습니다. 하지만, SplFileObject를 사용할 때 파일의 내용이 메모리에 로드됩니다. SplFileObject는 파일을 메모리에 로드하여 작업을 수행하기 때문에, 파일의 내용이 메모리에 로드됩니다.

    위의 코드를 수정하여 파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시키지 않도록 하실 수 있습니다.

    
    
    $file = new SplFileObject('test.txt');
    
    while (true) {
    
        $line = $file->fgets();
    
        if ($file->eof()) {
    
            break;
    
        }
    
        echo $line;
    
    }
    
    


    위의 코드는 파일의 끝을 확인할 때마다 파일 포인터의 위치를 이동시키지 않도록 하며, 파일의 내용을 메모리에 로드하여 작업을 수행합니다.

    2025-04-13 08:09

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,343건 / 4 페이지

검색

게시물 검색