PHP 文件操作
学习文件读写 · 难度:入门 · +10XP
PHP 文件操作指南
PHP 提供了丰富的文件操作函数,可以轻松实现文件的读取、写入、上传和管理。文件操作是 Web 开发中的常见需求:读取配置文件、保存用户上传的图片、输出日志记录、生成 CSV 报表等。PHP 的文件函数大多数直接封装了 C 语言的文件操作,简单易用。
文件读取
PHP 提供了多种读取文件的方式。你可以一次性读取整个文件,也可以按行或按字节逐步读取。选择哪种方式取决于文件大小和你的需求。
<?php
// 方式一:一次性读取整个文件到字符串
$content = file_get_contents('data.txt');
echo $content;
// 方式二:按行读取到数组
$lines = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
echo "行内容: " . $line . "
";
}
// 方式三:逐行读取(适合大文件,节省内存)
$handle = fopen('large.log', 'r');
if ($handle) {
while (($line = fgets($handle)) !== false) {
// 处理每一行
echo $line;
}
fclose($handle);
}
?>
文件写入
| 模式 | 含义 | 文件不存在时 |
|---|---|---|
'w' | 写入模式,清空原有内容从头写入 | 自动创建 |
'a' | 追加模式,新内容添加到文件末尾 | 自动创建 |
'r+' | 读写模式,从开头读写,不清空 | 报错 |
'w+' | 读写模式,清空原有内容 | 自动创建 |
<?php
// 写入字符串到文件
$data = "这是要写入的内容。
";
file_put_contents('output.txt', $data);
// 追加内容
file_put_contents('output.txt', "追加的文本
", FILE_APPEND);
// 使用 fopen + fwrite(更灵活)
$fh = fopen('log.txt', 'a');
fwrite($fh, date('Y-m-d H:i:s') . " - 用户登录
");
fclose($fh);
?>
文件信息与检查
在对文件进行操作之前,最好先检查文件是否存在、是否可读可写。PHP 提供了多个函数来获取文件的状态信息。
<?php
$file = 'document.pdf';
// 文件检查
if (file_exists($file)) {
echo "文件大小: " . filesize($file) . " 字节
";
echo "最后修改: " . date('Y-m-d H:i:s', filemtime($file)) . "
";
echo "是否可读: " . (is_readable($file) ? '是' : '否') . "
";
echo "文件类型: " . mime_content_type($file) . "
";
}
// 路径信息
$path = '/var/www/uploads/avatar.jpg';
echo "目录: " . dirname($path) . "
";
echo "文件名: " . basename($path) . "
";
echo "扩展名: " . pathinfo($path, PATHINFO_EXTENSION) . "
";
// 目录操作
$files = scandir('./uploads'); // 列出目录中所有文件
foreach ($files as $f) {
if ($f !== '.' && $f !== '..') {
echo $f . "
";
}
}
?>
CSV 文件处理
CSV(逗号分隔值)是数据交换中最常用的格式之一。PHP 内置了 fgetcsv() 和 fputcsv() 函数,可以方便地读取和生成 CSV 文件。
- 编写脚本读取一个文本文件,统计其中的行数和字符总数
- 实现一个简单的留言板:将用户提交的留言追加保存到
messages.txt文件中 - 将 10 条学生成绩数据(姓名, 语文, 数学, 英语)写入 CSV 文件,再从 CSV 读取计算平均分
- 创建一个简单的日志功能,每次页面访问时记录 IP 地址、访问时间和页面 URL
- 编写函数递归遍历指定目录,列出所有文件的路径和大小