引言:为什么PHP需要处理文件?
任何Web项目迟早都会遇到需要在服务器上保存数据的情况。无论是上传用户头像、创建错误日志还是生成报告,所有这些都需要管理文件和文件夹的能力。PHP提供了一套强大的文件系统操作函数,掌握它们并不像看起来那么困难。
在本文中,我们将介绍基本操作:创建、读取、写入、删除文件和目录,以及检查访问权限。所有示例均使用纯PHP编写,可直接用于您的项目。
1. 基础:打开、读取和写入文件
在对文件进行操作之前,需要先打开它。在PHP中,使用fopen()函数来完成。该函数返回一个资源(文件指针),随后可以对其进行操作。
文件打开模式
fopen()的第二个参数是访问模式。以下是最常用的模式:
'r'— 只读,指针位于文件开头。'w'— 写入(创建文件或清空已有文件)。'a'— 追加到文件末尾(如果文件不存在则创建)。'x'— 创建并写入;如果文件已存在则报错。
示例:向文件写入文本
<?php$filename = 'test.txt';$file = fopen($filename, 'w') or die('无法打开文件');$text = "你好,世界!";fwrite($file, $text);fclose($file);echo '文件写入成功';?>写入后,务必使用fclose()函数关闭文件——这样可以释放系统资源。
逐行读取文件
<?php$file = fopen('test.txt', 'r');while (!feof($file)) { $line = fgets($file); echo $line . '<br>';}fclose($file);?>feof()函数检查是否已到达文件末尾。fgets()读取一行内容。
更简单的替代方法
对于快速操作,PHP提供了封装函数:
file_get_contents($filename)— 将整个文件读入一个字符串。file_put_contents($filename, $data)— 将字符串写入文件(创建或覆盖)。
<?php// 读取$content = file_get_contents('test.txt');echo $content;
// 写入file_put_contents('new.txt', '简单写入');?>2. 目录管理:创建、删除、导航
在PHP中操作文件夹几乎与操作文件一样简单。主要函数有mkdir()、rmdir()和scandir()。
创建文件夹
<?php$dir = 'uploads';if (!is_dir($dir)) { mkdir($dir, 0777, true); echo '文件夹已创建';} else { echo '文件夹已存在';}?>参数0777是访问权限(掩码)。第三个参数true允许递归创建嵌套目录(例如images/2024/)。
删除文件夹
rmdir()函数只能删除空目录。如果目录内有文件,需要先清空它:
<?phpfunction removeDir($dir) { if (!is_dir($dir)) return; $items = scandir($dir); foreach ($items as $item) { if ($item == '.' || $item == '..') continue; $path = $dir . '/' . $item; if (is_dir($path)) { removeDir($path); } else { unlink($path); } } rmdir($dir);}removeDir('temp');echo '文件夹已删除';?>获取文件夹中的文件列表
<?php$files = scandir('uploads');foreach ($files as $file) { if ($file != '.' && $file != '..') { echo $file . '<br>'; }}?>