php文件读写操作的关键在于掌握 fopen() 打开和 fclose() 关闭文件,使用 ‘r’、’w’、’a’ 等模式控制访问方式;1. 读取文件可用 fgets() 逐行读取或 file_get_contents() 一次性读取;2. 写入文件可使用 fwrite() 或更简便的 file_put_contents(),注意使用 file_append 实现追加;3. 常用技巧包括检查文件是否存在(file_exists())、可读写性(is_readable() / is_writable())、删除(unlink())、复制(copy())和重命名(rename());4. 操作完成后应手动关闭文件句柄,并确保路径正确和权限充足,以避免错误。
PHP在文件读写操作上非常灵活,适合处理日志、配置文件、缓存等场景。关键在于掌握几个常用的函数和正确的使用方式。
如何打开和关闭文件?
在进行任何读写操作前,首先要用 fopen() 打开文件,这个函数的第二个参数决定了打开模式,比如 ‘r’ 是只读,’w” 是写入并清空文件,’a’ 是追加内容。
$handle = fopen("example.txt", "r");
打开后记得用 fclose($handle) 关闭文件资源,避免占用系统资源。虽然PHP会在脚本结束时自动释放,但手动关闭更稳妥,尤其是在处理大量文件或长时间运行的脚本中。
立即学习“PHP免费学习笔记(深入)”;
常见模式说明:
- ‘r’:只读,文件必须存在
- ‘w’:写入,清空已有内容或创建新文件
- ‘a’:追加,保留原内容,在末尾添加
- ‘r+’:读写,文件必须存在
怎么读取文件内容?
读取文件最常用的是 fgets() 和 file_get_contents()。
如果你逐行读取大文件,推荐使用 fgets(),它可以在不加载整个文件的情况下处理:
while (!feof($handle)) { $line = fgets($handle); echo $line . "<br>"; }
而一次性读取小文件内容,file_get_contents() 更简洁高效:
$content = file_get_contents("example.txt"); echo $content;
还可以配合 file() 把文件按行读取为数组:
$lines = file("example.txt", FILE_IGNORE_NEW_LINES);
这样每行就是一个数组元素,方便后续处理。
文件怎么写入内容?
写入文件主要用 fwrite() 或 file_put_contents()。
如果已经通过 fopen() 打开了文件,并且是写入模式(如 ‘w’ 或 ‘a’),可以用 fwrite():
$handle = fopen("example.txt", "a"); fwrite($handle, "这是要写入的内容n"); fclose($handle);
如果是简单写入,不需要多次打开关闭,直接用 file_put_contents() 会更省事:
file_put_contents("example.txt", "新的内容n", FILE_APPEND);
加上 FILE_APPEND 参数可以实现追加写入,否则默认覆盖原内容。
注意权限问题:确保目标文件可写,或者目录有写权限,否则会报错。
还有哪些实用技巧?
- 检查文件是否存在:用 file_exists(“example.txt”)
- 判断是否可读/写:is_readable() / is_writable()
- 删除文件:unlink(“example.txt”)
- 复制文件:copy(“source.txt”, “dest.txt”)
- 移动或重命名文件:rename(“old.txt”, “new.txt”)
这些函数在做文件管理类功能时经常用到,比如上传后的处理、日志清理、备份生成等。
另外,处理完文件后最好检查一下是否成功执行,例如:
if (file_put_contents("test.txt", "data")) { echo "写入成功"; } else { echo "写入失败,请检查权限"; }
基本上就这些操作了,看起来不复杂但容易忽略细节,比如路径错误、权限不足、忘记关闭句柄等。只要多注意这几个点,PHP的文件处理就能得心应手。