>  기사  >  백엔드 개발  >  PHP 모바일 파일 포인터 ftell(), fseek(), rewind() 함수 요약_php 기술

PHP 모바일 파일 포인터 ftell(), fseek(), rewind() 함수 요약_php 기술

WBOY
WBOY원래의
2016-05-16 20:31:311323검색

파일을 읽고 쓰는 과정에서 파일에 점프하고, 다른 위치에서 읽고, 다른 위치에 데이터를 써야 하는 경우가 있습니다. 예를 들어 파일을 사용하여 데이터베이스를 시뮬레이션하여 데이터를 저장하는 경우 파일 포인터를 이동해야 합니다. 포인터의 위치는 파일 헤더에서 시작하는 바이트 수로 측정됩니다. 기본적으로 파일이 다른 모드로 열릴 때 파일 포인터는 일반적으로 파일의 시작이나 끝 부분에 있습니다. (), fseek() 및 rewind() 함수는 파일 포인터에 대해 작동하며 해당 프로토타입은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

int ftell(resource handler) //파일 포인터의 현재 위치를 반환합니다
int fseek(resource hanlde,int offset[,int whence]) //파일 포인터를 지정된 위치로 이동
bool rewind(resource handler) //파일 포인터를 파일의 시작 부분으로 이동

이러한 함수를 사용할 때는 fopen() 함수로 열린 합법적인 파일 포인터를 제공해야 합니다. ftell() 함수는 지정된 리소스에서 파일 포인터의 현재 위치 오프셋을 얻습니다. rewind() 함수는 파일 포인터를 지정된 리소스의 시작 부분으로 다시 이동하고 fseek() 함수는 포인터를 해당 리소스로 이동합니다. 두 번째 매개변수 offset으로 지정된 위치입니다. 세 번째 선택적 매개변수가 제공되지 않으면 위치는 파일 시작 부분부터 오프셋 바이트로 설정됩니다. 그렇지 않은 경우 세 번째 매개변수는 세 가지 가능한 값으로 설정될 수 있으며 이는 포인터의 위치에 영향을 미칩니다.

★SEEK_CUR: 포인터 위치를 현재 위치에 두 번째 매개변수에서 제공하는 오프셋 바이트를 더한 값으로 설정합니다.
★SEEK_END: ​​​​포인터 위치를 EOF와 오프셋 바이트로 설정합니다. 여기서 오프셋은 음수 값으로 설정되어야 합니다.
★SEEK_SET: 포인터 위치를 오프셋 바이트로 설정합니다. 이는 세 번째 매개변수를 생략하는 것과 동일한 효과를 갖습니다.

fseek() 함수가 성공적으로 실행되면 0을 반환하고, 실패하면 -1을 반환합니다. 파일이 추가 모드 "a" 또는 "a"로 열린 경우, 파일이 추가되지만 파일 포인터의 위치는 관리되지 않습니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

$fp = fopen('data.txt' ,'r')or die("파일 열기 실패");

echo ftell($fp)."
"; //방금 연 파일의 포인터 기본 위치를 출력합니다. 파일 시작 부분의 포인터 위치는 0입니다
echo fread($fp, 10)."
"; //파일의 처음 10자를 읽고 출력하면 포인터 위치가 변경되었습니다.
echo ftell($fp)."
"; //파일의 처음 10자를 읽은 후 포인터가 10번째 바이트로 이동합니다.

fseek($fp, 100,SEEK_CUR); //포인터를 마지막 10바이트 위치로 이동
echo ftell($fp); //파일 위치는 110바이트입니다
echo fread($fp,10)."
"; //110~120바이트 위치에서 문자열을 읽습니다. 읽은 후 포인터 위치는 120입니다.

fseek($fp,-10,SEEK_END); //포인터를 마지막 10바이트 위치로 이동
echo fread($fp, 10)."
" //파일의 마지막 10자를 출력합니다

rewind($fp); //파일 포인터를 파일의 시작 부분으로 이동
echo ftell($fp); //포인터가 파일의 시작 부분에 있으므로 0을 출력합니다

fclose($fp);
?>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.