6.2 文件操作
文件操作是程序开发中最基本的内容之一。实际应用中,经常需要从文件读取数据,或者向文件写入数据,如分析日志数据和记录日志等。因此,作为编程的基本功之一,读者需要努力掌握文件处理的有关内容,并在实际应用中加强实践。本节将为读者介绍一些基本的文件操作函数。
6.2.1 打开和关闭文件
在程序中,处理文件的一般流程如图6-5所示。
要通过PHP读出文件内容,或者向文件写入数据,首先要做的是打开文件。在PHP中使用函数fopen()打开一个文件,该函数的语法如下所示。
$fp=fopen(string$filename,string$mode);
函数fopen()可以打开本地或远程文件,参数$filename是指要打开的文件的文件名,返回值是文件处理句柄$fp,程序通过$fp来操作文件。如果打开失败,函数返回FALSE。该函数的第2个参数$mode是字符串类型,指打开文件的模式。打开文件时,之所以要指定模式,是为了告诉操作系统如何处理即将打开的文件。例如,如果需要向某文件写入一些数据,可以向该函数的第2个参数传参数'w',此时,这个参数表示的含义是,以写入方式打开文件。表6-1列举了常用的文件打开模式。
下面的示例代码通过函数fopen()打开文件。
$fp=fopen($_SERVER['DOCUMENT_ROOT']."/../files/read.txt",'w');
上述代码通过函数fopen()打开files目录下的read.txt文件,这里使用了PHP的预定义变量$_SERVER['DOCUMENT_ROOT'],其后跟着的..表示服务器文档根目录的上级目录。这段代码要打开的文件在服务器文档目录之外,是出于安全上的考虑。传入该函数的第2个参数'w',表示以写入方式打开文件read.txt。
注意 在Linux/UNIX系统中指定文件路径时,使用斜杠(/)。如果是在Windows环境下,指定目录时,可以使用斜杠(/)或者左斜杠(\)。如果使用的是\,在使用函数fopen打开指定目录的文件时,需要对\转义,即使用\\来指定目录。
例如,在Windows平台打开C盘某目录下的文件,使用\指定目录,其代码如下所示。
$fp=fopen("C:\\data\\log.dat");
一般实际开发中,很少使用\来指定目录,因为这样的代码只能运行于Windows环境下,不利于程序的移植。除了打开本机文件,函数fopen()还可以通过HTTP协议、FTP协议或其他网络协议打开远程文件。打开文件后,就可以向文件写入数据,或者从文件中读取数据。当完成数据的写入或读取后,作为文件操作的最后一步,需要关闭文件。PHP程序中,使用函数fclose()关闭一个已经打开的文件。如果文件成功关闭,该函数返回TRUE,否则返回FALSE。下面的代码片段演示了使用函数fcolse()关闭打开的文件。这行代码中的变量$fp就是已经打开的文件的处理句柄。
fcolse($fp);