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下MAIL的另一解决方案
Oct 09 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
php多任务程序实例解析
Jul 19 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php经典算法集锦
Nov 14 PHP
php版微信小店调用api示例代码
Nov 12 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
php自动加载代码实例详解
Feb 26 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.NET的入门教程
2006/10/09 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
劳动竞赛活动总结
2014/05/05 职场文书
学校班班通实施方案
2014/06/11 职场文书
小学教师工作总结2015
2015/04/07 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
聊聊golang中多个defer的执行顺序
2021/05/08 Golang