2026-07-29 17:59:13
PHP中文件读取和写入操作可通过fopen/fclose、file_get_contents/file_put_contents等函数实现,需根据场景选择打开模式并注意安全权限。 以下是具体方法及示例:
一、文件打开与关闭fopen()函数
语法:fopen(文件路径, 打开模式)
作用:打开文件并返回文件指针资源,后续操作基于此指针。
常用模式:
r:只读(文件必须存在)。
w:写入(清空内容,不存在则创建)。
a:追加(写入内容添加到末尾)。
r+:读写(文件必须存在)。
w+:读写(清空原内容)。
a+:读和追加(保留原内容)。
fclose()函数
语法:fclose($handle)
作用:关闭文件指针,释放资源。
示例:
$handle = fopen('data.txt', 'r');// 操作文件...fclose($handle);file_get_contents()
特点:一次性读取整个文件内容为字符串,简单高效,适合小文件。
示例:
$content = file_get_contents('data.txt');echo $content;fread()
特点:从已打开的文件指针中读取指定长度的数据,需配合fopen使用。
示例:
$handle = fopen('data.txt', 'r');$content = fread($handle, 1024); // 读取1024字节fclose($handle);file()
特点:将文件按行读入数组,适合逐行处理文本。
示例:
$lines = file('data.txt');foreach ($lines as $line) { echo $line . '<br>';}file_put_contents()
特点:自动处理打开、写入、关闭,简单直接。默认覆盖文件内容,需追加时使用FILE_APPEND标志。
示例:
// 覆盖写入file_put_contents('log.txt', '新内容');// 追加写入file_put_contents('log.txt', '追加内容', FILE_APPEND);fwrite()(或fputs())
特点:向已打开的文件写入数据,需配合fopen使用。选择a模式可追加内容。
示例:
$handle = fopen('log.txt', 'a');fwrite($handle, date('Y-m-d H:i:s') . ' - 操作记录n');fclose($handle);权限检查
确保PHP进程对文件有读写权限(Linux服务器需检查文件所有者及权限)。
使用is_readable()和is_writable()判断文件状态:
if (is_readable('data.txt')) { echo '文件可读';}路径安全
避免用户直接控制文件路径,防止目录遍历攻击(如../路径)。
对用户输入的路径进行过滤或使用白名单验证。
大文件处理
大文件建议逐行读取(如fgets()),避免内存溢出:
$handle = fopen('large_file.txt', 'r');while (!feof($handle)) { $line = fgets($handle); echo $line;}fclose($handle);模式选择
根据需求选择打开模式:
需保留原内容时用a或a+。
需清空文件时用w或w+。
通过掌握上述方法及注意事项,可高效安全地完成PHP文件操作。