PHP文件的打开与关闭fopen()、fclose()

zxh5566  2016-08-20 11:46   Hits: 

虽然PHP与外部资源接触最多的是数据库,但也有很多情况会应用到普通文件或是XML文件等,例如文件系统,网页静态化和在没有数据库的环境中持久存储数据等,对文件的操作最常见的就是读与写,
以及一些其他的相关处理,这些操作都可以通过PHP提供的众多与文件有关的标准函数完成。

文件的打开与关闭

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

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

该函数的第一个参数需要提供要被打开文件的URL,这个URL可以是脚本所在的服务器中的绝对路径,也可以是相对路径,还可以是网络资源中的文件。
第二个参数需要提供文件模式,文件模式可以告诉操作系统如何处理来自其他人或脚本的访问请求,以及一种用来检查你是否有权访问这个特定文件的方法。当在打开文件时有三种选择
打开一个文件为了只读,只写或者读和写
如果要写一个文件,可以覆盖所有已有的文件内容,或者需要将新数据追加到文件末尾。
如果在一个区分二进制文件和纯文本文件的系统上写一个文件,还必须指定采用的方式
函数fopen()也支持以上三种方式的组合,只需要在第二个参数中提供一个字符串,指定将对文件进行操作即可。

r 只读方式打开文件,从文件开头开始读
r+ 读写方式打开文件,从文件开始开始读写
w 只写方式打开文件,从文件开头开始写,如果文件已经存在,将文件指针指向文件头并将文件大小截为零,即删除所有文件已有的内容,如果该文件不存在,函数将创建这个文件
w+ 读写方式打开文件,从文件开头开始读写,如果文件已经存在,将文件指针指向文件开头将文件大小截为零,即删除所有文件已有的内容,如果该文件不存在,函数将创建这个文件
x 创建并写入方式打开,将文件指针指向文件头,如果文件已存在,则fopen()调用失败并返回false,并生成一条E_WARNING级别的错误信息,如果文件不存在则尝试创建,仅能用于本地文件
x+ 创建并读写方式打开,将文件指针指向文件头,如果文件已存在,则fopen()调用失败并返回false,并生成一条E_WARNING级别的错误信息,如果文件不存在则尝试创建,仅能用于本地文件
a 写入方式打开,将文件指针指向文件末尾,如果该文件已有内容,将从该文件末尾开始追加,如果该文件不存在,函数将创建这个文件
a+ 写入方式打开,将文件指针指向文件末尾,如果该文件已有内容,将从从该文件末尾开始追加或者读,如果该文件不存在,函数将创建这个文件
b 以二进制模式打开文件,用于与其他模式进行连接,如果文件系统能够区分二进制文件和文本文件,你可能会使用它
t 以文本模式打开文件,这个模式也只是windows系统下一个选项,不推荐

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

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

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

<?php
$handle = fopen("/home/rasmus/file.txt",'r');
$handle = fopen("$_SERVER['DOCUMENT_ROOT']/data/info.txt","r");
$handle = fopen("c://data//file.gif","wb");
$handle = fopen("http://www.txxwl.net",'r');

2、函数fclose()

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

上一篇:PHP文件夹操作,遍历目录,删除和新建目录,复
下一篇:PHP文件写入fwite()、fputs()、file_put_contens()