0

0

PHP编程:介绍常见的文件操作方式_PHP教程

php中文网

php中文网

发布时间:2016-07-20 10:57:34

|

830人浏览过

|

来源于php中文网

原创

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

PHP处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题。

1.打开文件

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

<ol class="dp-c"><li class="alt"><span><span>resource </span><span class="func">fopen</span><span> ( string filename, string mode [, bool use_include_path [, resource zcontext]] )  </span></span></li><li><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(filename,mode)</span><span class="comment">//打开文件,返回代表此文件的资源的句柄</span><span> </span></li></ol>

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

文件名称可以使用相对路径或者绝对路径也可以使用网络协议模式,打开模式具有rr+ww+aa+xx+b

在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 rn 字符的奇怪问题。

为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。

以下是几种打开文件的方式

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

<ol class="dp-c"><li class="alt"><span><span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'log.txt'</span><span>,</span><span class="string">"rb"</span><span>);  </span></span></li><li><span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">'../log.txt'</span><span>,</span><span class="string">"rb"</span><span>);  </span></li><li class="alt"><span class="vars">$fp</span><span> = @</span><span class="func">fopen</span><span>(</span><span class="string">"http://www.runer.com.cn/default.htm"</span><span>,</span><span class="string">"rb"</span><span>);</span></li><li class="alt"><span>//还可以使用ftp和ghoper等协议,必须启用php.ini文件中的allow_url_fopen选项 </span></li></ol>

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

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

<ol class="dp-c"><li class="alt"><span><span class="vars">$filename1</span><span> = </span><span class="string">"userinfo.txt"</span><span>;</span><span class="comment">//目录下或include_path中存在这个文件 </span><span> </span></span></li><li><span class="vars">$filename2</span><span> = </span><span class="string">"test.txt"</span><span>;</span><span class="comment">//目录下或include_path并不存在这个文件 </span><span> </span></li><li class="alt"><span class="vars">$resource1</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename1</span><span>,</span><span class="string">"rb"</span><span>);  </span></li><li><span>@</span><span class="vars">$resource2</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"rb"</span><span>);</span><span class="comment">//因为目录中不存在这个文件,并且并未使用或include_path寻找包含文件所在路径则此操作会报错,使用错误抑制符@可以迫使浏览器不输出错误信息 </span><span> </span></li><li class="alt"><span class="keyword">if</span><span>(</span><span class="vars">$resource1</span><span>)  </span></li><li><span class="func">echo</span><span> </span><span class="string">"打开文件{$filename1}成功"</span><span>;  </span></li><li class="alt"><span class="keyword">if</span><span>(!@</span><span class="func">fopen</span><span>(</span><span class="vars">$filename2</span><span>,</span><span class="string">"r"</span><span>))  </span></li><li><span class="func">echo</span><span> </span><span class="string">"打开文件{$filename2}不成功"</span><span>; </span></li></ol>

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

输出结果:打开文件userinfo.txt成功

2.使用完毕文件后,要显式的告诉PHP已经使用完文件,让操作系统确保将文件的所有内容正确地从缓冲区刷新到硬盘

使用fclose()关闭文件,

<ol class="dp-c"><li class="alt"><span><span>bool fclose ( resource handle )</span><span class="comment">//关闭一个已打开的文件指针 </span><span> </span></span></li></ol>

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

3.读取文件,fopen函数的mode参数允许读取,PHP提供了几个函数从文件读取数据

string fgets ( int handle [, int length] )从文件指针中读取一行,在二进制文件上尝试fgets会产生不可预测的结果

如果不指定长度,默认读取1K数据,碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止

string fgetss ( resource handle [, int length [, string allowable_tags]] )从文件指针中读取一行并过滤掉 HTML 标记

Asp开源商城系统YothSHOP
Asp开源商城系统YothSHOP

YothSHOP是优斯科技鼎力打造的一款asp开源商城系统,支持access和Sql server切换,完善的会员订单管理,全站生成静态html文件,SEO优化效果极佳,后台XP模式和普通模式随意切换,极易操作,欢迎使用! Asp开源商城系统YothSHOP功能介绍:1.使用静态页和程序页分离技术,网站可自由开启和关闭,实现全站生成静态页,可动静态切换,方便二次开发和后期维护。2.管理员管理:后台

下载

fgetc()读取单个字符

fread()读取任意二进制数据

代码部分:

<ol class="dp-c"><li class="alt"><span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span> (</span><span class="string">"test.jpg"</span><span>, </span><span class="string">"rb"</span><span>);  </span></span></li><li><span class="vars">$c</span><span>;  </span></li><li class="alt"><span class="keyword">while</span><span> (!</span><span class="func">feof</span><span>(</span><span class="vars">$handle</span><span>)) {  </span></li><li><span class="vars">$contents</span><span> .= @</span><span class="func">fread</span><span>(</span><span class="vars">$handle</span><span>, 8192);</span><span class="comment">//循环读取并将其合并为一个大块文件 </span><span> </span></li><li class="alt"><span>}  </span></li><li><span>fclose(</span><span class="vars">$handle</span><span>); </span></li></ol>

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

4.判断文件读取的状态

每个文件句柄都有一个文件指针,或者一个指出下一个操作将在文件中哪里发生的游标,根据fopen函数的mode参数

文件指针最初位于文件的开头(0),或者文件的末尾

feof()可以判断文件是否已经到末尾(到末尾后函数返回TRUE)

filesize()函数返回文件的大小 5.写入文件

fwrite()函数执行文件写入

代码部分:

<ol class="dp-c"><li class="alt"><span><span class="vars">$filename</span><span> = </span><span class="string">'test.txt'</span><span>;  </span></span></li><li><span class="vars">$somec</span><span>;   </span></li><li class="alt"><span class="comment">// 首先我们要确定文件存在并且可写。 </span><span> </span></li><li><span class="keyword">if</span><span> (</span><span class="func">is_writable</span><span>(</span><span class="vars">$filename</span><span>)) {  </span></li><li class="alt"><span class="comment">// 在这个例子里,我们将使用添加模式打开$filename, </span><span> </span></li><li><span class="comment">// 因此,文件指针将会在文件的开头, </span><span> </span></li><li class="alt"><span class="comment">// 那就是当我们使用fwrite()的时候,$somecontent将要写入的地方。 </span><span> </span></li><li><span class="keyword">if</span><span> (!</span><span class="vars">$handle</span><span> = </span><span class="func">fopen</span><span>(</span><span class="vars">$filename</span><span>, </span><span class="string">'a'</span><span>)) {  </span></li><li class="alt"><span class="func">echo</span><span> </span><span class="string">"不能打开文件 $filename"</span><span>;  </span></li><li><span class="func">exit</span><span>;  </span></li><li class="alt"><span>}  </span></li><li><span class="comment">// 将$somecontent写入到我们打开的文件中。 </span><span> </span></li><li class="alt"><span class="keyword">if</span><span> (fwrite(</span><span class="vars">$handle</span><span>, </span><span class="vars">$somecontent</span><span>) === FALSE) {  </span></li><li><span class="func">echo</span><span> </span><span class="string">"不能写入到文件 $filename"</span><span>;  </span></li><li class="alt"><span class="func">exit</span><span>;  </span></li><li><span>}  </span></li><li class="alt"><span class="func">echo</span><span> </span><span class="string">"成功地将 $somecontent 写入到文件$filename"</span><span>;  </span></li><li><span>fclose(</span><span class="vars">$handle</span><span>);  </span></li><li class="alt"><span>} </span><span class="keyword">else</span><span> {  </span></li><li><span>}  </span></li><li class="alt"><span class="func">echo</span><span> </span><span class="string">"文件 $filename 不可写"</span><span>; </span></li></ol>

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

输出结果:

成功地将 添加这些文字到文件 写入到文件test.txt

对于二进制数据,必须指定第三个参数,它包含写入到磁盘的数据字节数

<ol class="dp-c"><li class="alt"><span><span class="vars">$result</span><span> = @fwrite(</span><span class="vars">$fp</span><span>,</span><span class="vars">$binary_data</span><span>,mb_strlen(</span><span class="vars">$binary_data</span><span>,</span><span class="string">'8bit'</span><span>));  </span></span></li></ol>

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

6.文件权限和其他信息

  • is_readable()//判断文件是否可读
  • is_writeable()//判断文件是否可写
  • is_writable()//判断文件是否可写
  • fileperms()//判断文件的权限(UNIX风格的文件权限测试函数)
  • file_exists()//是否存在这个文件
  • fileowner()//判断文件所属用户
  • filegroup()//判断文件所属组

7.删除和重命名文件

  • unlink()//删除文件
  • rename()//重命名文件

8.访问目录

目录访问建议使用前向斜线"/",兼容windows和unix系统

  • basename()//返回不包括路径信息的文件名
  • dirname()//返回文件名的目录部分
  • realpath()//接受相对路径,返回文件的绝对路径
  • pathinfo()//提取给定路径的目录名,基本文件名和扩展名
  • opendir()//打开目录,返回资源句柄
  • readdir()//读取目录项
  • rewinddir()//将读取指针返回开头
  • closedir()//关闭读取句柄
  • chdir()//改变当前脚本执行期间的当前工作目录
  • mkdir()//创建目录
  • rmdir()删除目录

希望以上内容介绍的是八中常见的文件操作方式,对你有帮助。

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


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445756.htmlTechArticlePHP 处理本地服务器上的文件和目录是非常方便的,但有时候会出现权限和路径相关的问题。 1.打开文件 resource fopen (stringfilename,stringmode[,...

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

927

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

306

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

180

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

741

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号