PHP文件读写操作核心函数详解

Jasper
Jasper
发布时间:2026-10-14| 4人浏览过
原创

本文详细梳理了PHP中文件读写的常用函数。涵盖fwrite、file_put_contents的写入方式,以及fread、fgets、file_get_contents等不同粒度的读取技巧,附带代码示例说明各函数的具体用法与适用场景。

准备条件与写入文件

在将程序数据保存到文件时,通常需要遵循“打开资源 → 写入内容 → 关闭资源”的操作顺序。行结束符因操作系统而异:UNIX系统为\n,Windows为\r\n,Macintosh为\r。在处理跨平台文本文件时需注意此差异。

第1步:使用 fwrite() 写入数据

目的:将字符串内容按需写入已打开的文件资源中。
入口:使用 fopen() 以只写模式(如 'w')获取文件句柄。
动作:调用 int fwrite(resource $handle, string $string[, int $length])。若指定长度参数,仅写入该长度的字符;否则写入到内容末尾。
结果:成功返回写入的字节数,失败返回 FALSE。

复制代码
<?php
$fileName = "data.txt";
// 以覆盖模式打开,不存在则创建
$handle = fopen($fileName,'w') or die('打开文件失败');
for($row=0;$row<10;$row++){
    // \n 表示换行
    fwrite($handle, $row.":www.lampbrother.net\n");
}
fclose($handle);
?>

第2步:快捷写入 file_put_contents()

目的:一次性将数据块写入文件,无需手动管理文件指针。
动作:直接调用 file_put_contents($filename, $data)。

复制代码
<?php
$fileName = "data.txt";
$data = "共10行数据\n";
for($row=0;$row<10;$row++){
    $data .= $row.":www.lampbrother.net\n";
}
// 注意:默认模式下多次调用会清空文件,建议预先拼接好全部数据
file_put_contents($fileName, $data);
?>

说明:fputs() 是 fwrite() 的别名。若连续多次调用 file_put_contents() 且未追加标志位,后一次调用会清除前面的数据。

读取文件内容策略

读取时需判断是否到达文件末尾(EOF)。主要依赖 feof() 函数,它接受一个文件资源并在指针位于末尾时返回 TRUE。

第3步:按字节读取 fread()

目的:从文件中精确读取指定长度的字节串,适用于二进制文件。
入口:$handle = fopen('file', 'rb'),注意二进制模式需加 'b'。
动作:调用 string fread(int $handle, int $length)。

复制代码
<?php
// 方法一:循环读取直到结束
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, 'rb') or die("打开失败");
$contents = "";
while(!feof($handle)){
    $contents .= fread($handle, 1024); 
}
fclose($handle);
echo $contents;

// 方法二:利用 filesize 预知总大小
$filename = "data.txt";
$handle = fopen($filename, "r");
// 一次性读出所有字节
echo fread($handle, filesize($filename));
?>

第4步:快速读取 file_get_contents()

目的:将整个文件内容加载到单个字符串中,性能通常优于逐次读取。
动作:echo file_get_contents("data.txt")。支持自动内存映射技术优化。

第5步:逐行或逐字符读取

1. fgets():读取一行
目的:每次读取直到遇到换行符或EOF。
动作:string fgets(int $handle[, int $length]),省略长度默认为1024字符。去除末尾换行的可用 rtrim()。

复制代码
<?php
$handle = fopen("data.txt", "r");
while(!feof($handle)){
    $buffer = fgets($handle, 4096);
    echo $buffer . "<br>";
}
fclose($handle);
?>

2. fgetc():读取单个字符
目的:精准定位并读取当前指针位置的1个字符。
结果:成功返回字符,失败返回 FALSE。

3. file():整行转数组
目的:将整个文件读入数组,每行一个元素(含换行符),适合后续数组运算。

4. readfile():直接输出
目的:读取文件并立即输出到缓冲区,不占内存存储变量,返回读取字节数。

以上就是 PHP 文件读写操作相关函数的详细内容,更多关于 PHP 文件处理技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。