fread 함수

(PHP 4, PHP 5, PHP 7, PHP 8)

fread — 바이너리 안전 파일 읽기


설명

fread(resource $stream, int $length): string|false

fread()stream이 참조하는 파일 포인터에서 length 바이트까지 읽습니다. 다음 조건 중 하나가 충족되는 즉시 읽기가 중지됩니다.

  • length 바이트를 읽었습니다.
  • EOF(파일 끝)에 도달했습니다.
  • 패킷을 사용할 수 있게 되거나 socket timeout가 발생합니다(네트워크 스트림의 경우).
  • 스트림이 읽기 버퍼링되고 일반 파일을 나타내지 않는 경우 청크 크기(보통 8192)와 동일한 바이트 수까지 최대 한 번 읽기가 수행됩니다. 이전에 버퍼링된 데이터에 따라 반환된 데이터의 크기가 청크 크기보다 클 수 있습니다.

매개변수

stream
일반적으로 fopen()을 사용하여 생성되는 파일 시스템 포인터 리소스입니다.
length
읽은 최대 바이트 수입니다.

반환 값

읽은 문자열을 반환하거나 실패 시 false를 반환합니다.


Examples

예제 #1 간단한 fread() 예제

                  
<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
                  
                

예제 #2 바이너리 fread() 예제

경고 바이너리와 텍스트 파일을 구분하는 시스템(예: Windows)에서 파일은 fopen() 모드 매개변수에 포함된 'b'로 열어야 합니다.

                  
<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
                  
                

예제 #3 원격 fread() 예제

경고 원격 파일을 읽을 때 반환된 스트림이나 popen()fsockopen()과 같이 일반 로컬 파일이 아닌 항목에서 읽을 때 패킷을 사용할 수 있게 되면 읽기가 중지됩니다. 즉, 아래 예와 같이 데이터를 청크로 모아야 합니다.

                  
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
                  
                
                  
<?php
$handle = fopen("http://www.example.com/", "rb");
if (FALSE === $handle) {
    exit("Failed to open stream to URL");
}

$contents = '';

while (!feof($handle)) {
    $contents .= fread($handle, 8192);
}
fclose($handle);
?>
                  
                

노트

메모: 파일의 내용을 문자열로 가져오려면 위의 코드보다 성능이 훨씬 좋은 file_get_contents()를 사용하세요.

메모: fread()는 파일 포인터의 현재 위치에서 읽습니다. ftell()을 사용하여 포인터의 현재 위치를 찾고 rewind()를 사용하여 포인터 위치를 되감습니다.


기타

  • fwrite() - 바이너리 안전 파일 쓰기
  • fopen() - 파일 또는 URL을 엽니다.
  • fsockopen() - 인터넷 또는 Unix 도메인 소켓 연결 열기
  • popen() - 프로세스 파일 포인터를 엽니다.
  • fgets() - 파일 포인터에서 라인 가져오기
  • fgetss() - 파일 포인터에서 줄을 가져오고 HTML 태그를 제거합니다.
  • fscanf() - 형식에 따라 파일에서 입력을 구문 분석
  • file() - 전체 파일을 어레이로 읽습니다.
  • fpassthru() - 파일 포인터에 남아 있는 모든 데이터 출력
  • ftell() - 파일 읽기/쓰기 포인터의 현재 위치를 반환
  • rewind() - 파일 포인터 위치 되감기
  • unpack() - 바이너리 문자열에서 데이터 압축 풀기