개발자 Q&A

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

2025.04.29 18:37

SplFileObject::rewind() 메서드 이해에 도움을 요청합니다.

목록
  • 몽고DB러버 2일 전 2025.04.29 18:37
  • 43
    1
제가 SplFileObject::rewind() 메서드를 사용하여 파일을 처음부터 다시 읽기 위해서는 어떻게 해야 하는지 궁금합니다.
파일을 처음부터 다시 읽기 위해 rewind() 메서드를 사용하면 파일 포인터가 파일의 처음 위치로 이동하는 것을 알고 있습니다.
하지만, 이 메서드를 사용한 후에 다시 fread() 메서드를 사용하면 이전에 읽었던 데이터를 다시 읽을 수 있는지 궁금합니다.

그리고, 다른 파일을 열어서 rewind() 메서드를 사용한 후 fread() 메서드를 사용하면 이전에 열었던 파일의 데이터를 읽을 수 있는지 궁금합니다.

위에 질문된 내용에 대한 답변을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    SplFileObject::rewind() 메서드는 파일 포인터를 파일의 처음 위치로 이동시킵니다. 이 메서드를 사용한 후 fread() 메서드를 사용하면 이전에 읽었던 데이터를 다시 읽을 수 없습니다.

    이유는 SplFileObject는 파일을 읽을 때 내부 버퍼를 사용하기 때문입니다. fread() 메서드는 내부 버퍼에서 데이터를 읽습니다. 따라서, 파일 포인터를 처음 위치로 이동시키더라도 내부 버퍼에는 이전에 읽었던 데이터가 남아 있지 않습니다.

    또한, 다른 파일을 열어서 rewind() 메서드를 사용한 후 fread() 메서드를 사용하면 이전에 열었던 파일의 데이터를 읽을 수 없습니다. SplFileObject는 파일을 읽을 때 내부 변수를 사용하기 때문입니다. 내부 변수는 파일을 열 때 초기화되기 때문에 이전에 열었던 파일의 데이터를 읽을 수 없습니다.

    예를 들어, 다음 코드를 살펴보세요.

    #hostingforum.kr
    php
    
    $file1 = new SplFileObject('file1.txt');
    
    $file1->rewind();
    
    $data1 = $file1->fread(10);
    
    
    
    $file2 = new SplFileObject('file2.txt');
    
    $file2->rewind();
    
    $data2 = $file2->fread(10);
    
    


    이 코드에서는 file1.txt를 읽고 rewind() 메서드를 사용하여 파일 포인터를 처음 위치로 이동시킵니다. 그리고 fread() 메서드를 사용하여 10바이트의 데이터를 읽습니다. 그런 다음, file2.txt를 읽고 rewind() 메서드를 사용하여 파일 포인터를 처음 위치로 이동시킵니다. fread() 메서드를 사용하여 10바이트의 데이터를 읽습니다.

    이 코드를 실행하면 file2.txt의 데이터가 읽히는 것을 볼 수 있습니다. file1.txt의 데이터는 읽히지 않습니다.

    2025-04-29 18:38

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

검색

게시물 검색