PHP文件读写操作核心函数详解
本文详细梳理了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 文件处理技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









