讲师中心 微信公众号
AI工具推荐 视频效率加速

PHP怎么读取和写入文件_PHP文件读写操作详细说明【指南】

酷明大大_6309

酷明大大_6309

发布时间:2026-02-09 09:00:01

|

828人浏览过

|

来源于php中文网

原创

PHP文件操作有五种方法:一、file_get_contents/file_put_contents简洁读写;二、fopen/fgets/fwrite逐行控制;三、SplFileObject面向对象处理;四、readfile/fpassthru直接输出;五、file读数组+file_put_contents写数组。

php怎么读取和写入文件_php文件读写操作详细说明【指南】

如果您需要在PHP中处理文件内容,例如从文本文件中提取数据或将信息保存到磁盘,则必须使用内置的文件系统函数。以下是执行PHP文件读取和写入操作的具体方法:

一、使用file_get_contents和file_put_contents函数

这两个函数是PHP中最简洁的文件读写方式,适用于中小型文件,无需手动打开和关闭文件流,自动处理编码与资源管理。

1、使用file_get_contents读取整个文件内容并赋值给变量:file_get_contents('example.txt')。

2、检查返回值是否为false以判断读取失败:if (false === $content) { /* 处理错误 */ }。

立即学习“PHP免费学习笔记(深入)”;

3、使用file_put_contents将字符串写入文件:file_put_contents('output.txt', 'Hello World');。

4、添加FILE_APPEND标志追加内容而非覆盖:file_put_contents('log.txt', 'New entry', FILE_APPEND);。

二、使用fopen配合fgets/fwrite进行逐行读写

该方法适合处理大文件或需逐行控制逻辑的场景,提供更精细的I/O控制能力,但需显式管理文件指针和资源释放。

1、调用fopen以只读模式打开文件:$handle = fopen('data.txt', 'r');。

2、使用fgets逐行读取内容直至返回false:while (($line = fgets($handle)) !== false) { echo $line; }。

3、使用fwrite向已打开的写入模式文件句柄写入数据:fwrite($handle, "Line content\n");。

4、操作完成后必须调用fclose关闭文件句柄:fclose($handle);。

三、使用SplFileObject面向对象方式操作文件

SplFileObject提供了面向对象接口,支持迭代器遍历、行号定位及CSV解析等高级功能,适合结构化文件处理任务。

1、实例化SplFileObject对象并指定文件路径:$file = new SplFileObject('list.txt');。

Knowledge Graph - Csv Graph Loader Generator
Knowledge Graph - Csv Graph Loader Generator

从 CSV 数据集生成图数据库加载器和三元组映射。将表格 CSV 数据转换为图数据库可直接使用的节点、边和三元组。

下载

2、通过foreach遍历每一行:foreach ($file as $line) { echo trim($line); }。

3、调用seek方法跳转到指定行号(从0开始):$file->seek(5);。

4、使用fwrite方法写入内容(需以可写模式构造):$file = new SplFileObject('write.txt', 'w'); $file->fwrite('Data');。

四、使用readfile和fpassthru直接输出文件内容

当目标是将文件原始字节直接发送至输出缓冲区(如下载或图片响应),应避免加载全部内容进内存,提高效率并降低内存占用。

1、调用readfile直接输出文件并返回字节数:readfile('image.jpg');。

2、设置Content-Type和Content-Length响应头确保客户端正确解析:header('Content-Type: image/jpeg'); header('Content-Length: ' . filesize('image.jpg'));。

3、使用fopen打开文件后调用fpassthru传输剩余内容:$fp = fopen('document.pdf', 'rb'); fpassthru($fp); fclose($fp);。

4、注意readfile和fpassthru均不进行内容修改,仅作透传,不可用于写入操作。

五、使用file函数将文件读入数组并用file_put_contents写入数组内容

file函数将文件按行分割为索引数组,便于对每行做独立处理;file_put_contents支持数组参数,自动以换行符连接后写入。

1、调用file读取文件为行数组,忽略空行和换行符:$lines = file('input.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);。

2、对数组元素进行过滤或修改,例如移除注释行:array_filter($lines, function($l) { return strpos($l, '#') !== 0; });。

3、将处理后的数组写入新文件:file_put_contents('filtered.txt', $lines);。

4、若需自定义分隔符,可先implode再写入:file_put_contents('joined.txt', implode('|', $lines));。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

354

2023.09.25

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

798

2025.12.04

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

6915

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

362

2025.11.27

C++ 面向对象编程与设计模式实践
C++ 面向对象编程与设计模式实践

本专题整合了 C++ 面向对象编程的核心机制,涵盖类的定义与访问控制、构造函数与析构函数、拷贝语义与移动语义、继承与虚函数多态、抽象类与接口、运算符重载、友元函数等关键知识点,同时结合单例模式、工厂模式、观察者模式、策略模式等常用设计模式的 C++ 实现,帮助开发者写出结构清晰、易于维护的面向对象代码。

364

2026.04.09

Java 面向对象与核心编程机制
Java 面向对象与核心编程机制

系统讲解 Java 面向对象编程的核心知识体系,涵盖类的定义与封装、构造方法与 this/super 关键字、继承与方法重写、多态与向上向下转型、抽象类与接口的区别与设计原则、异常处理机制(try-catch-finally / 自定义异常)、泛型的类型参数与通配符、集合框架(List/Set/Map)的使用与遍历方式,帮助开发者全面掌握 Java 程序设计的核心机制与面向对象思维。

243

2026.04.17

fclose函数的用法
fclose函数的用法

fclose是一个C语言和C++中的标准库函数,用于关闭一个已经打开的文件,是文件操作中非常重要的一个函数,用于将文件流与底层文件系统分离,释放相关的资源。更多关于fclose函数的相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

842

2023.11.30

fgets在c语言中的用法
fgets在c语言中的用法

本专题整合了c语言中fgets用法介绍,阅读专题下面的文章了解更多详细内容。

153

2025.08.27

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn