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 相关文章推荐
apache+php+mysql安装配置方法小结
Aug 01 PHP
php 判断数组是几维数组
Mar 20 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
关于laravel后台模板laravel-admin select框的使用详解
Oct 03 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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世纪万年历
2006/12/06 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
在Python中调用ggplot的三种方法
2015/04/08 Python
python计算auc指标实例
2017/07/13 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python类反射机制使用实例解析
2019/12/30 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
学生会主席演讲稿
2014/04/25 职场文书
求职信的正确写法
2014/07/10 职场文书
毕业实习证明范本
2015/06/16 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
sql字段解析器的实现示例
2021/06/23 SQL Server