31 文件系统

简介: 路老师分享PHP文件处理技术,涵盖文件的打开、关闭、读取及写入操作,帮助初学者深入了解PHP语言。

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。

image.gif 编辑


 上篇文章简单的实现了柱形图、折线图、3D饼图的制作,本篇文章我们开始着手文件系统的学习。

1 文件处理

文件处理包括文件的读取、关闭和重写等,例如访问一个文件需要3步:打开文件、读取文件和关闭文件。其他的操作要么包含在读写文件中(如显示内容、写入内容等),要么与文件自身的属性有关系(如文件遍历、文件重命名等)。本文将对常用的文件处理技术进行详细的讲解。

1.1 打开文件

对文件进行操作首先要打开文件,这是进行数据存取的第一步。在PHP中使用fopen()函数打开文件,其语法如下:

resource fopen(string $filename, string $mode[, bool $use_include_path =false[,resource $context]])

image.gif

  • filename是文件名
  • mode是打开方式
  • use_include_path是指定打开文件的指定路径,可选参数
  • context上下文支持参数

mode打开方式取值列表如下:

mode取值 模式名称 说明
r 只读 读模式--进行读取,文件指针位于文件的开头
r++ 只读 读写模式--进行读写,文件指针位于文件的开头。在现有文件内容的末尾之前进行写入就会覆盖原有内容。
w 只写 写模式--进行写入文件,文件指针指向头文件。如果该文件存在,则所有文件内容被删除;否则函数将创建这个文件。
w+ 只写 写模式--进行读写,文件指针指向头文件。如果该文件存在,则所有文件内容被删除;否则函数将创建这个文件。
x 谨慎写 写模式--打开文件,从文件头开始写。如果文件已经存在,则该文件将不会被打开,函数返回false,PHP将产生一个警告。
x++ 谨慎写 读、写模式--打开文件,从文件头开始写,如果文件按已经存在,则文件将不会被打开,函数返回false,PHP将产生一个警告。
a 追加 追加模式--打开文件,文件指针指向尾文件。如果该文件已有内容,则将从文件末尾开始追加;如果该文件不存在,则函数将创建这个文件。
a+ 追加 追加模式--打开文件,文件指针指向头文件。如果该文件已有内容,则将从文件末尾开始追加或读取;如果该文件不存在,则函数将创建这个文件。
b 二进制 二进制模式--用于与其他模式进行连接。如果文件系统能够区分二进制文件和文本文件,可能会使用它。Windows可以区分:UNIX则不区分。推荐使用这个选项,便于获取最大程度的可移植性。它t是默认模式。
t 文本 用于与其他模式相结合。这个模式知识Windows下的一个选项。

1.2 关闭文件

对文件操作结束后应该关闭这个文件,否则可能引起错误。在PHP中使用fclose()函数关闭文件,语法如下:

bool fclose(resource handle)

image.gif

handle 指向的文件关闭,成功返回true,失败返回false。其往往配合fopen()一起使用。

<?php
   //打开文件
   $file = fopen("../file.txt","rb");
   //... 操作
   // 关闭文件
   fclose($file);
 
?>

image.gif

1.3 从文件中读取数据

读取文件数据分为读取整个文件数据、读取一行数据、读取一个字符和读取任意长度字符串操作。

1.3.1 读取整个文件数据

(1)readfile()函数

readfile()函数读取文件的时候不需要打开关闭文件,不需要echo/print等输出语句,直接写出文件路径即可。其语法如下:

int readfile(string $filename [, bool $use_include_path = false])

image.gif

<?php 
   $res = readfile("./file/testFile.txt");
?>

image.gif

image.gif 编辑

(2)  file()函数

file()函数读取整个文件内容的时候是将内容按行存储到数组中,包括换行符在内。如果失败返回false。语法如下:

array file(string $filename [, int $flags = 0])

image.gif

<?php 
   $resArr = file("./file/testFile.txt");
   
   echo "<pre>";
   print_r($resArr);
?>

image.gif

image.gif 编辑

(3) file_get_contents()函数

将文件读入一个字符串。语法如下:

string file_get_contents( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen]]]])

image.gif

  • offset 开始读取的位置
  • maxlen读取的字符串长度
<?php 
   $resArr = file_get_contents("./file/testFile.txt");
   
   echo $resArr;
?>

image.gif

image.gif 编辑

1.3.2 读取一行数据

读取一行数据的函数有两个fgets()函数和fgetss()函数。

(1) fgets()函数

fgets()函数用于以此读取一行数据,语法如下:

string fgets(resource $handle [, int $length])

image.gif

<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    echo fgets($res);
   }
   fclose($res);
   
?>

image.gif

image.gif 编辑

(2) fgetss()函数

fgetss()函数是fgets()的变体,用于读取一行数据,同时,fgetss()函数会过滤掉HTML标签,语法如下:

string fgetss(resource $handle [, int $length [, string $allowable_tags]])

image.gif

allowable_tags值就是指定的html标签,入"<span>",表示只保留HTML的<span>标签,其他标签都被过滤掉。

文本内容如下:

123
abc
luTeacher
<span style="color:red;font-size:40px">mySpan</span>
<html>
 <body>
     <br>
    <h1>test html </h1>
 </body>
</html>
PHP

image.gif

<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    echo fgetss($res,100,'<span>');
   }
   fclose($res);
   
?>

image.gif

image.gif 编辑

1.3.3 读取一个字符

(1)fgetc()函数

在对某个字符进行查找、替换时,需要有针对性地对某个字符进行读取。语法如下:

string fgetc(resource $handle)

image.gif

注意:该函数返回一个字符,该字符从handle指向的文件中得到,遇到EOF则返回false。

<?php 
   $res = fopen("./file/testFile.txt","rb");
  
   while(!feof($res)){
    //一个字符一个字符的输出
    echo fgetc($res);
   }
   fclose($res);
   
?>

image.gif

image.gif 编辑

1.3.4 读取任意长度的字符串

fread()函数可以从文件中读取指定长度的数据,语法如下:

string fread(resource $handle, int $length)

image.gif

<?php 
   header('Content-type:text/html;charset=utf-8');
   $res = fopen("./file/testFile.txt","rb");
   echo "原始内容:<br>";
   echo readfile('./file/testFile.txt')."<br><br><br>";
   echo"fread读取字符串内容:<br><br>";
   echo fread($res,18);
   fclose($res);
   
?>

image.gif

image.gif 编辑

下一篇 PHP文件系统之写文件

相关文章
|
6月前
|
机器学习/深度学习 存储 人工智能
线上观看人次18万+!智算技术沙龙圆满落幕(附 PPT 下载)
与现场超 100 位参会嘉宾一起为大模型效能提升与自主算力平台落地提供创新思路。
|
7月前
|
安全 前端开发 测试技术
微信小游戏的验收
微信小游戏验收需从技术、交付、业务、安全四维度严格把关,涵盖性能、源码、逻辑、防作弊等关键点,确保产品可玩、可控、可持续运营,避免外包风险与后续维护陷阱。
|
2月前
|
Web App开发 机器学习/深度学习 SQL
DeepSeek 怎么导出 Word?保存聊天记录、Markdown、公式的 5 种方法(2026 最新)
DeepSeek虽无官方Word导出功能,但用户已将其用作“第二文档助手”。本文详解5种导出方案:复制粘贴(简易)、Markdown转换(稳定)、Pandoc(专业)、在线工具(便捷)及DS随心转插件(全自动支持公式/表格/流程图)。适配学生、开发者与AI重度用户,助你高效交付高质量Word文档。
763 0
|
4月前
|
人工智能 自然语言处理 JavaScript
(包括最新安装包)5 分钟搭建 OpenClaw 本地 AI 智能体完整流程
本教程详解Windows一键部署OpenClaw(本地AI智能体)全流程,5分钟完成安装,无需编程与手动配置环境。支持文件整理、办公自动化、浏览器操作等任务,数据全程本地处理,安全可靠。
|
新零售 数据采集 分布式计算
6000字干货分享:数据中台项目管理实践分享
本文总结了企业级数据中台项目的实践经验,希望能够为正在规划或者已在实施数据中台类项目的企业和个人提供经验。
6000字干货分享:数据中台项目管理实践分享
|
4月前
|
人工智能 自然语言处理 API
OpenClaw 是什么?OpenClaw 能干什么?OpenClaw 阿里云部署保姆级图文教程
OpenClaw(曾用名:Clawdbot、Moltbot)是**2026年主流开源AI智能体工具**,主打“自然语言指令 + 自动执行任务”,无需编程基础,就能完成文件管理、网页抓取、代码生成、办公协同等重复工作,相当于个人专属AI助理。
652 0
|
6月前
|
编解码 算法 数据可视化
基于 YOLOv8 的面向矿井场景的煤炭图像智能检测系统 [目标检测完整源码](YOLOv8 + PyQt5 实战)
本文围绕矿井复杂环境下的煤炭图像识别需求,系统阐述了一套基于 YOLOv8 与 PyQt5 的煤炭图像智能检测解决方案。从数据集构建、模型训练与评估,到推理流程及图形化界面部署,完整展示了工业视觉项目从算法到应用落地的全过程。实践结果表明,YOLOv8 在矿井场景中具备良好的检测精度与实时性能,而 PyQt5 界面有效降低了系统使用与部署门槛,使模型真正具备工程化和产品化能力。该方案可直接服务于煤炭分拣、矿区巡检等智慧矿山应用,也为工业场景下目标检测系统的设计与实现提供了可复用的技术范式。
424 9
|
5月前
|
人工智能 网络安全 开发工具
让OpenClaw价值翻倍:阿里云/本地部署与10个官方skill 解锁 AI Agent 效率上限
大多数人使用OpenClaw时,仅停留在“指令-输出”的基础层面,却忽略了其背后可深度挖掘的效率杠杆。OpenClaw的核心瓶颈与Claude Code一致——上下文窗口是有限的“白板”,如何让这块白板发挥最大价值,决定了AI开发的效率上限。
560 11
|
6月前
|
存储 人工智能 网络安全
2026年阿里云轻量服务器部署OpenClaw(Clawdbot)小白零基础教程
OpenClaw(原Clawdbot,曾用名Moltbot)是一款开源轻量级AI自动化代理工具,2026年版本在部署灵活性、功能兼容性上实现重大升级,核心优势在于“自然语言驱动+全流程任务自动化”,无需手动编写脚本,仅需输入口语化指令,即可完成文档处理、日程管理、文件读写、跨工具协同、代码生成等各类重复性工作,被广泛应用于个人办公、新手开发、轻量团队协作等场景,堪称“私人AI员工”。
744 1
|
7月前
|
小程序 JavaScript 前端开发
2026最新基于Vue+thinkPhP6前后端分离的婚恋交友管理系统/交友小程序源码搭建
基于ThinkPHP6+Vue.js构建,采用MySQL存储数据、Redis提升性能,实现用户管理、智能匹配与实时聊天。前端使用Vue+UniApp多端适配,Element UI与uView优化交互,通过WebSocket与JWT保障实时通信与安全认证,支持H5、小程序及App全平台部署。
411 0