PHP文件读写

PHP文件读写

一、相关函数

  • 打开文件:fopen
  • 读写文件:fgets(按行读取)、fwrite
  • 关闭文件:fclose
  • 附加函数
    • 判断文件是否已经到达末尾:feof($fp)
    • 一次性将文件所有内容读取:file_get_contents($fp),使用该函数当参数为URL地址时可以发送请求
    • 一次性写入文件:file_put_contents()
    • 获取当前文件指针所在位置:ftell
    • 直接将文件指针指向某个位置:fseek

二、读写模式

模式 描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

三、示例

  • 读文件
$fp = fopen("learn.csv", "r");
while(!feof($fp)){
    $line = fgets($fp);
    $line = str_replace("\n","<br/>",$line);
    $line = iconv("GBK","UTF-8",$line);
    echo $line;
}
fclose($fp);
  • 写文件
$fp = fopen("write.csv","a");
fwrite($fp,"/n\test,test1234,login-fail");
fclose($fp);
  • 使用PHP模拟tail -f实时查看文件内容
set_time_limet(0);

$pos = 0;
while(true){
    $fp = fopen("test.txt","r");
    fseek($, $pos);
    whlie($line = fgets($fp)){
        echo $line . "<br/>";
    }
    $pos = ftell($fp);
    fclose($fp);

    ob_flush();         // 把数据从PHP的缓冲中释放出来
    flush();            // 把不在缓冲中的或者被释放的数据发送到浏览器
    sleep(2);
}
上一篇
下一篇