fwrite 함수

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

fwrite — 바이너리 안전 파일 쓰기


설명

fwrite(resource $stream, string $data, ?int $length = null): int|false

fwrite()data의 내용을 stream이 가리키는 파일 스트림에 씁니다.


매개변수

stream
일반적으로 fopen()을 사용하여 생성되는 파일 시스템 포인터 리소스입니다.
data
작성될 문자열입니다.
length
length가 int이면 length 바이트가 기록되거나 data의 끝에 도달한 후(둘 중 먼저 도래하는 시점) 쓰기가 중지됩니다.

반환 값

fwrite()는 쓴 바이트 수를 반환하거나 오류가 발생하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 length는 이제 nullable입니다.

Examples

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

                  
<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// Let's make sure the file exists and is writable first.
if (is_writable($filename)) {

    // In our example we're opening $filename in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $somecontent will go when we fwrite() it.
    if (!$fp = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    // Write $somecontent to our opened file.
    if (fwrite($fp, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($fp);

} else {
    echo "The file $filename is not writable";
}
?>
                  
                

노트

메모:

네트워크 스트림에 대한 쓰기는 전체 문자열이 쓰기 전에 종료될 수 있습니다. fwrite()의 반환 값을 확인할 수 있습니다.

                    
  <?php
  function fwrite_stream($fp, $string) {
      for ($written = 0; $written < strlen($string); $written += $fwrite) {
          $fwrite = fwrite($fp, substr($string, $written));
          if ($fwrite === false) {
              return $written;
          }
      }
      return $written;
  }
  ?>
                    
                  

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

메모: stream이 추가 모드에서 fopen()된 경우 fwrite()는 원자적입니다(data 크기가 파일 시스템의 블록 크기를 초과하지 않는 한, 일부 플랫폼에서는 파일이 로컬 파일 시스템에 있는 한). 즉, fwrite()를 호출하기 전에 자원을 flock()을 필요가 없습니다. 모든 데이터는 중단 없이 기록됩니다.

메모:

파일 포인터에 두 번 쓰는 경우 데이터는 파일 내용 끝에 추가됩니다..

                    
  <?php
  $fp = fopen('data.txt', 'w');
  fwrite($fp, '1');
  fwrite($fp, '23');
  fclose($fp);

  // the content of 'data.txt' is now 123 and not 23!
  ?>
                    
                  

기타

  • fread() - 바이너리 안전 파일 읽기
  • fopen() - 파일 또는 URL을 엽니다.
  • fsockopen() - 인터넷 또는 Unix 도메인 소켓 연결 열기
  • popen() - 프로세스 파일 포인터를 엽니다.
  • file_get_contents() - 전체 파일을 문자열로 읽습니다.
  • pack() - 데이터를 이진 문자열로 압축