Home >Backend Development >PHP Tutorial >Summary of usage of PHP fopen() and fclose() functions
本文介绍了函数fopen(),fclose()的用法及注意事项:
在处理文件内容之前,通常需要建立与文件资源的连接,即打开文件。同样,结束该资源的操作后,应当关闭连接资源。所谓打开文件,实际是建立文件的各种有关信息,并使文件指针指向该文件,就可以发起输入或输出的实体联系在一起,也就禁止再对该文件进行操作。在PHP中可以通过标准函数fopen()建立与文件资源的连接,使用fclose()函数关闭通过fopen()函数打开的文件资源。
①函数fopen()
该函数用来打开一个文件,并在打开一个文件时,还需要指定如果使用它。也就是以哪种文件模式打开文件资源。服务器上的操作系统文件必须知道要对打开的文件进行什么操作。操作系统需要了解在打开这个文件之后,这个文件是否还允许其他的程序脚本再打开,还需要了解脚本的属主用户是否具有在这种方式下使用该文件的权限。该函数的原型如下所示:
代码如下:
resource fopen(string filename,string mode[,bool use_include_path[,resource zcontext]) //打开文件
第一个参数需要提供要被打开文件的URL。这个URL可以是脚本所在的服务器中的绝对路径,也可以是相对路径,还可以是网络资源中的文件。第二个参数需要提供文件模式,文件模式可以告诉操作系统如何处理来自其他人或脚本的访问请求,以及一种用来检查你是否有权访问这个特定文件的写法。当在打开文件时有三种选择:
打开一个文件为了只读、只写或者是读和写。
如果要写一个文件,可以覆盖所有已有的文件内容,或者需要将新数据追加到文件末尾。
如果在一个区分二进制文件和纯文本文件的系统上写一个文件,还必须指定采用的方式。
函数fopen()也支持以上三中房四海的组合,只需要在第二个参数中提供一个字符串,指定将对文件进行的操作即可。在下表中列出了可以使用的文件模式及其意义。
第三个参数是可选的,如果资源位于本地文件系统,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()将其关闭。
The above is the detailed content of Summary of usage of PHP fopen() and fclose() functions. For more information, please follow other related articles on the PHP Chinese website!