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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
PHP的面试题集
Nov 19 PHP
分享PHP入门的学习方法
Jan 02 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
php数组指针操作详解
Feb 14 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
laravel中的fillable和guarded属性详解
Oct 23 PHP
详解Laravel制作API接口
May 31 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 GeoIP的使用教程
2011/03/09 PHP
php中对2个数组相加的函数
2011/06/24 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
smarty中常用方法实例总结
2015/08/07 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
Lab.js初次使用笔记
2015/02/28 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
Sublime开发python程序的示例代码
2018/01/24 Python
对python中的argv和argc使用详解
2018/12/15 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
通过实例解析Python return运行原理
2020/03/04 Python
Python requests模块session代码实例
2020/04/14 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
前台领班岗位职责
2013/12/04 职场文书
机械专业应届生求职信
2013/12/12 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
500字小学生检讨书
2015/02/19 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers