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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
浅谈discuz密码加密的方式
May 22 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
ThinkPHP框架表单验证操作方法
Jul 19 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 ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
微信小程序实现点赞业务
2021/02/10 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
互动出版网:专业书籍
2017/03/21 全球购物
安全负责人任命书
2014/06/06 职场文书
婚内房产协议书范本
2014/10/02 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
幼儿学前班评语
2014/12/29 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
JavaScript原型链详解
2021/11/07 Javascript