PHP打开和关闭文件操作函数总结


Posted in PHP onNovember 18, 2014

在处理文件内容之前,通常需要建立与文件资源的连接,即打开文件。同样,结束该资源的操作后,应当关闭连接资源。所谓打开文件,实际是建立文件的各种有关信息,并使文件指针指向该文件,就可以发起输入或输出的实体联系在一起,也就禁止再对该文件进行操作。在PHP中可以通过标准函数fopen()建立与文件资源的连接,使用fclose()函数关闭通过fopen()函数打开的文件资源。

①函数fopen()

该函数用来打开一个文件,并在打开一个文件时,还需要指定如果使用它。也就是以哪种文件模式打开文件资源。服务器上的操作系统文件必须知道要对打开的文件进行什么操作。操作系统需要了解在打开这个文件之后,这个文件是否还允许其他的程序脚本再打开,还需要了解脚本的属主用户是否具有在这种方式下使用该文件的权限。该函数的原型如下所示:

resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext])            //打开文件

第一个参数需要提供要被打开文件的URL。这个URL可以是脚本所在的服务器中的绝对路径,也可以是相对路径,还可以是网络资源中的文件。第二个参数需要提供文件模式,文件模式可以告诉操作系统如何处理来自其他人或脚本的访问请求,以及一种用来检查你是否有权访问这个特定文件的写法。当在打开文件时有三种选择:

★打开一个文件为了只读、只写或者是读和写。
★如果要写一个文件,可以覆盖所有已有的文件内容,或者需要将新数据追加到文件末尾。
★如果在一个区分二进制文件和纯文本文件的系统上写一个文件,还必须指定采用的方式。

函数fopen()也支持以上三中房四海的组合,只需要在第二个参数中提供一个字符串,指定将对文件进行的操作即可。在下表中列出了可以使用的文件模式及其意义。

PHP打开和关闭文件操作函数总结

第三个参数是可选的,如果资源位于本地文件系统,PHP则认为可以使用本地路径或是相对路径来访问此资源。如果将这个参数设置为1,这样就会使PHP考虑配置指令include_path中指定的路径(在PHP的配置文件中设置)。

第四个参数也是可选的,fopen()函数允许文件名称以协议名称开始,例如“http://”,并且在一个远程位置打开该文件。通过设置这个参数,还可以支持一些其他的协议。

如果fopen()函数成功地打开一个文件,该函数将返回一个指向这个文件的文件指针。对该文件进行操作所使用的读、写以及其他的文件操作函数,都要使用这个资源来访问该文件。如果打开文件失败,则返回FALSE。函数fopen()的是哟on个示例如下:

<?php

//使用绝对路径打开file.txt文件,选择只读模式,并返回资源$handle

$handle = fopen("/home/rasmus/file.txt", "r");

//访问文档根目录下的文件,也以只读模式打开

$handle = fopen("$_SERVER['DOCUMENT_ROOT']/data/info.txt","r"); 

//在Windows平台上,转义文件路径的每个反斜线,或者用斜线,以二进制和只写模式组合

$handle = fopen("C:\\data\\file.gif", "wb");

//使用相对路径打开file.txt文件,选择只读模式,并返回资源$handle

$handle = fopen("../data/info.txt", "r");

//打开远程文件,使用HTTP协议只能以只读的模式打开

$handle = fopen("http://www.example.com", "r");

//使用FTP协议打开远程文件,如果FTP服务器可写,则可以以写的模式打开

$handle = fopen("ftp://user:password@example.com", "w");

?>

②函数fclose()

资源类型属于PHP的基本类型之一,一旦完成资源的处理,一定要将其关闭,否则可能会出现一些预料不到的错误。函数fclose()就会撤销fopen()打开的资源类型,成功时返回TRUE,否则返回FALSE。参数必须是使用fopen()或fsockopen()函数打开的已存的文件指针。在目录操作中opendir()函数也是开启一个资源,使用closedir()将其关闭。

PHP 相关文章推荐
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
PHP生成plist数据的方法
Jun 16 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
PHP文件读写操作相关函数总结
Nov 18 #PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 #PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 #PHP
PHP文件锁函数flock()详细介绍
Nov 18 #PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 #PHP
PHP操作文件的一些基本函数使用示例
Nov 18 #PHP
一个经典的PHP文件上传类分享
Nov 18 #PHP
You might like
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
php正则表达式学习笔记
2015/11/13 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
python网络编程示例(客户端与服务端)
2014/04/24 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Python中turtle作图示例
2017/11/15 Python
python绘制双柱形图代码实例
2017/12/14 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
python 处理string到hex脚本的方法
2018/10/26 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
安全生产检讨书
2014/01/21 职场文书
优秀员工获奖感言
2014/03/01 职场文书
篮球社团活动总结
2014/06/27 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
五年级学生评语大全
2014/12/26 职场文书
工程部主管岗位职责
2015/02/12 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android