1. fwrite()는 파일을 씁니다
프로그램의 데이터를 파일에 저장하는 것이 더 쉽습니다. 문자열 내용을 파일에 쓰려면 fwrite() 함수를 사용하세요. 개행 문자는 파일에서 줄의 끝을 나타내는 문자 시퀀스 n으로 파일에 표시됩니다. 한 번에 한 줄씩 정보를 입력하거나 출력해야 하는 경우 이 점을 염두에 두십시오. 운영 체제마다 끝 기호가 다르며 UNIX 기반 시스템에서는 "
"Windows 시스템에서 사용되는 줄 끝 문자로"
n"을 줄 끝 문자로 사용하는 경우 Macintosh 기반 시스템에서는 "
"를 줄 끝 문자로 사용합니다. 텍스트 파일을 작성하고 새 줄을 삽입하려면 해당 운영 체제의 줄 끝 기호를 사용해야 합니다. fwrite() 함수의 프로토타입은 다음과 같습니다.
int fwrite(리소스 핸들, 문자열 문자열[, int 길이]) //파일 쓰기
첫 번째 매개변수는 fopen() 함수로 연 파일 리소스를 제공해야 하며, 이 함수는 두 번째 매개변수에서 제공한 문자열 내용을 첫 번째 매개변수에서 지정한 리소스로 출력합니다. 세 번째 선택적 인수 lenth가 주어지면 fwrite()는 length 문자가 기록될 때 중지됩니다. 그렇지 않으면 내용이 끝날 때까지 쓰기가 계속됩니다. length 바이트보다 적게 쓰여지면 모든 내용을 쓴 후 함수도 중지됩니다. fwrite() 함수가 실행된 후 오류가 발생하면 FALSE를 반환합니다. 아래 코드는 파일에 쓰는 예제입니다.
//파일명을 저장할 변수 선언
$fileName = "data.txt";
//fopen() 함수를 사용하여 쓰기 전용 모드로 파일을 엽니다. 파일이 없으면 파일을 만듭니다. 열기에 실패하면 프로그램을 전달합니다.
$handle = fopen($fileName,'w') 또는 die('Open'.$fileName.'파일 실패!!');
//10번 반복하고 파일에 10라인의 데이터를 씁니다.
for($row=0;$row<10;$row ){
fwrite($handle, $row.":www.lampbrother.netn");
}
fclose($handle);
?>
프로그램 실행 후 현재 디렉터리에 data.txt 파일이 존재한다면 해당 파일은 지워지고 10줄의 데이터가 기록됩니다. data.txt 파일이 없으면 생성되고 10줄의 데이터가 기록됩니다. 또한 fwrite() 함수의 별칭 함수인 fputs() 함수를 사용하여 파일을 작성할 수도 있습니다. 파일을 빠르게 작성해야 하는 경우 file_put_contents() 함수를 사용하고 fopen()을 호출할 수 있습니다. ), fwrite() 및 fclose() 함수의 기능은 동일합니다. 이 함수의 사용 코드는 다음과 같습니다.
//파일명을 저장할 변수 선언
$fileName = "data.txt";
//파일에 적힌 데이터를 저장할 변수를 선언합니다
$data = "총 10행의 데이터
";
for($row=0;$row<10;$row ){
//10개의 데이터를 모두 문자열 변수에 저장합니다
$data .= $row.":www.lampbrother.netn";
}
//지정된 파일에 모든 데이터를 한번에 쓰기
file_put_contents($fileName, $data);
?>
이 함수는 지정된 파일에 직접 데이터를 쓸 수 있습니다. 동시에 여러 번 호출하여 동일한 파일에 데이터를 쓰면 이 함수를 마지막으로 호출하여 쓴 데이터만 파일에 저장됩니다. 파일을 삭제할 때마다 파일이 다시 열리고 파일 안의 원본 데이터가 지워지기 때문에 첫 번째 프로그램처럼 여러 줄의 데이터를 연속적으로 쓸 수는 없습니다.
2. 파일 내용 읽기
PHP는 파일의 내용을 읽기 위한 여러 표준 기능을 제공하며 기능적 특성에 따라 프로그램에서 사용할 기능을 선택할 수 있습니다. 이러한 기능의 기능과 설명은 다음 표에 나와 있습니다.
파일을 읽을 때 줄 끝 기호뿐만 아니라 "
", 프로그램에는 파일 끝에 도달한 시기를 식별하는 표준 방법도 필요합니다. 이 표준을 일반적으로 EOF(End Of File) 문자라고 합니다. EOF는 매우 중요한 개념이며 거의 모든 주류 프로그래밍 언어에서 제공됩니다. 파일 EOF에 도달했는지 분석하는 내장 함수입니다. PHP에서는 feof() 함수를 사용합니다. 이 함수는 열린 파일 리소스를 받아들이고 파일 포인터가 파일 끝에 있는지 확인합니다. 파일의 끝이면 TRUE를 반환합니다.
①함수 fread()
이 함수는 열린 파일에서 지정된 길이의 문자열을 읽는 데 사용됩니다. 바이너리 파일에도 안전하게 사용할 수 있습니다. 바이너리 파일과 텍스트 파일을 구별하는 시스템(예: Windows)에서 파일을 열 때 fopen() 함수의 모드 매개변수에 'b'를 추가하세요. fread() 함수의 프로토타입은 다음과 같습니다.
string fread(int handler,int length) //열린 파일 읽기
이 함수는 파일 포인터 리소스 핸들에서 최대 길이 바이트를 읽습니다. length 바이트를 읽었을 때, EOF에 도달했을 때 또는 (네트워크 스트림의 경우) 패킷을 사용할 수 있을 때 중 먼저 발생하는 경우 파일 읽기가 중지됩니다. 이 함수는 읽은 내용 문자열을 반환하거나, 실패할 경우 FALSE를 반환합니다. 해당 함수의 사용코드는 다음과 같습니다.
//파일에서 지정된 바이트 수를 읽어 변수에 저장합니다.
$filename = "data.txt";
$handle = fopen($filename, 'r') 또는 die("파일 열기 실패");
$contents = fread($handle, 100); //파일에서 100바이트 읽기
fclose($handle); //파일 리소스 닫기
echo $contents; //파일에서 읽은 내용을 출력합니다
//파일의 전체 내용을 변수로 읽고, 매번 일부를 읽고, 루프에서 읽습니다
$filename = "c:\files\somepic.gif";
$handle = fopen($filename, 'rb') 또는 die("파일 열기 실패"); //읽기 전용 모드에서 모드는 'b'를 추가합니다
$contents = "";
while(!feof($handle)){ //feof()를 사용하여 파일의 끝을 확인합니다
$contents .=fread($handle, 1024); //매회 1024바이트 읽기
}
fclose($handle); //파일 리소스 닫기
echo $contents; //파일에서 읽은 내용을 모두 출력
//파일의 전체 내용을 읽는 또 다른 방법
$filename = "data.txt";
$handle = fopen($filename, "r")or die("파일 열기 실패");
$contents = fread($handle, filesize($filename)); //fieldize() 함수를 사용하여
을 함께 읽어옵니다.
fclose($handle);
echo $contents;
?>
단순히 파일의 내용을 문자열로 읽고 싶다면 위의 코드보다 성능이 훨씬 뛰어난 file_get_contents() 함수를 사용할 수 있습니다. file_get_contents() 함수는 파일 내용을 문자열로 읽는 데 선호되는 방법입니다. 운영 체제에서 지원하는 경우 성능 향상을 위해 메모리 매핑 기술도 사용됩니다. 이 함수의 사용 코드는 다음과 같습니다.
echo file_get_contents("data.txt"); //텍스트 파일의 내용을 읽고 출력합니다
echo file_get_contents("c:\files\somepic.gif"); //바이너리 파일의 내용을 읽고 출력합니다
?>
②함수 fgets(), fgetc()
fgets() 이 함수는 열린 파일 리소스에서 한 번에 최대 한 줄을 읽습니다. fgets() 함수의 프로토타입은 다음과 같습니다.
string fgets(int handler[,int length]) //열린 파일에서 한 줄을 반환합니다
첫 번째 매개변수는 fopen() 함수를 사용하여 열린 리소스를 제공합니다. 두 번째 선택적 길이 인수가 제공되면 이 함수는 길이 - 1바이트를 반환합니다. 또는 개행이나 EOF가 발생하기 전에 읽은 모든 내용을 반환합니다. 선택적 길이 매개변수가 생략된 경우 기본값은 1024자입니다. 대부분의 경우 이는 fgets() 함수가 1024자 이전에 개행 문자를 만날 때까지 읽는다는 것을 의미하므로 호출이 성공할 때마다 다음 줄을 반환합니다. 읽기에 실패하면 FALSE를 반환합니다. 이 함수의 사용 코드는 다음과 같습니다.
$handle = fopen("data.txt", "r") or die("파일 열기 실패"); //읽기 전용 모드로 파일 열기
while(!feof($handle)){
$buffer = fgets($handle,4096); //한 번에 한 줄씩 읽기
echo $buffer."
" //각 항공편 출력
}
fclose($handle);
?>
fgetc() 함수는 열린 파일 리소스의 현재 포인터 위치에서 문자 하나만 읽습니다. 파일 끝 플래그 EOF가 발견되면 FALSE 값이 반환됩니다. 이 함수의 사용 코드는 다음과 같습니다.
$fp = fopen('data.txt','r') 또는 die("파일 열기 실패");
while(false !==($char = fgetc($fp))){
echo $char."
";
}
?>
③함수파일()
이 함수는 file_get_contents()와 유사합니다. 파일을 열기 위해 fopen() 함수를 사용할 필요가 없습니다. 차이점은 file() 함수가 전체 파일을 배열로 읽을 수 있다는 것입니다. . 배열의 각 요소는 파일의 해당 행에 해당하며 각 요소는 개행 문자로 구분되지만 개행 문자는 여전히 각 요소의 끝에 추가됩니다. 이러한 방식으로 배열 관련 기능을 사용하여 파일 내용을 처리할 수 있습니다. 이 함수의 사용 코드는 다음과 같습니다.
//test.txt 파일의 내용을 배열로 읽어와 출력
print_r(file(test.txt));
?>
④readfile함수()
이 함수는 지정된 파일 전체를 읽어서 즉시 출력 버퍼에 출력하고 읽은 바이트 수를 반환할 수 있습니다. 또한 이 함수는 파일을 열기 위해 fopen() 함수를 사용할 필요가 없습니다. 아래 예에서는 파일 내용을 브라우저에 쉽게 출력합니다. 코드는 다음과 같습니다.
//data.txt 파일의 데이터를 직접 읽어서 브라우저에 출력합니다
readfile("data.txt");
?>