PHP文件相关的操作函数——文件操作
1.文件的代开与关闭
1.1 fopen()
作用:该函数用于打开一个文件
具体使用访问:http://www.w3school.com.cn/php/func_filesystem_fopen.asp
1.2 fclose()
该函数会撤销fopen()打开的资源类型,成功时返回TRUE,否则返回FALSE。参数必须使用fopen()或fsockopen()函数打开的已存的文件指针。在目录操作中opendir()函数也是开启一个资源,使用closedir()将其关闭。
具体使用访问:http://www.w3school.com.cn/php/func_filesystem_fclose.asp
2.写入文件
2.1 fwrite()
具体访问:http://www.w3school.com.cn/php/func_filesystem_fwrite.asp
3.读取文件内容
2.1 fread()
作用:该函数用来在打开的文件中读取指定长度的字符串。也可以安全用于二进制文件,在区分二进制文件和文本文件的系统上(如Windows)打开文件时,fopen()函数的mode参数要加上'b'.
语法:string fread(int handle,int length)
参数:该函数从文件指针资源handle中读取最多length个字节。在读取完length个字节数,或到达EOF时,或(对于网络流)当一个包可用时都会停止读取文件,就看先碰到哪种情况了。该函数返回读取的内容字符串,如果失败则返回FALSE。
代码示例:
$filename = "C:\Users\lenovo\Desktop/test.txt";
$handle = fopen($filename,"r") or die("文件打开失败");
$contents = fread($handle,4);
fclose($handle);
echo $contents;
2.2 file_get_contents()
作用:用来将文件的内容读入到一个字符串中的首选方法,如果只想将一个文件的内容读入到一个字符串中,可以用该函数,它的性能比2.1例子中的代码好得多。如果操作系统支持,还会使用内存映射技术来增强性能。示例代码如下:
echo file_get_contents("C:\Users\lenovo\Desktop/test.txt"); //读取文本文件中的内容并输出
echo file_get_contents("C:\\files\\somepic.gif"); //读取二进制文件中的内容并输出
2.3 fgets()
作用:该函数一次至多从打开的文件资源中读取一行内容。
语法:string fgets(ing handle[,int length])
参数:第一个参数提供使用fopen()函数打开的资源。如果提供了第二个可选参数length,该函数返回length-1个字节。或者返回遇到换行或EOF之前读取的所有内容。如果忽略可选的length参数,默认为1024个字符。在大多数情况下,这意味着fgets()函数将读取到1024个字符前遇到换行符,因此每次成功调用都会返回下一行。如果读取失败则返回FALSE。
代码示例:
$handle = fopen("data.txt","r") or die("文件打开失败"); //以只读模式打开文件
while(!feof($handle)) //循环读取第一行
{
$buffer = fgets($handle,4096); //一次读取一行内容
echo $buffer."<br>"; //输出每一行
}
2.4 fgetc()
作用:在打开的文件资源中读取当前指针位置处的一个字符。如果遇到文件结束表示EOF,将返回FALSE值。示例代码如下:
$fp = fopen("data.txt","r") or die("文件打开失败"); //以只读模式打开文件
while(false !== ($char = fgetc($fp))) //在文件中每次循环读取一个字符
{
echo $char."<br>"; //输出单个字符
}
2.5 file()
该函数非常有用,与file_get_contents()类似,不需要使用fopen()函数打开文件,不同的是file()函数可以把整个文件读入到一个数组中。数组中的每个元素对应文件中相应的行,各元素由换行符分隔,同时换行符仍附加在每个元素的末尾。这样,就可以使用数组的相关函数对文件内容进行处理。代码示例如下:
print_r(file("test.txt")); //将文件test.txt中的内容读入到一个数组中,并输出
2.6 readfile()
该函数可以读取指定的整个文件,立即输出到输出缓冲区,并返回读取的字节数。该函数也不需要使用fopen()函数打开文件。在下面的示例中,轻松地将文件内容输出到浏览器。
readfile("data.txt"); //直接将文件data.txt中的数据读出并输出到浏览器
3 访问远程文件
使用PHP不仅可以让用户通过浏览器访问服务器端的文件,还可以通过HTTP或FTP等协议访问其他服务器中的文件,可以在大多数需要用文件名作为参数的函数中使用HTTP和FTP URL来代替文件名。使用fopen()函数将制定的文件名与资源绑定到一个流上,如果文件名是"scheme://..."的格式,则被当成一个URL,PHP将搜索协议器(也被称为封装协议)来处理此模式。
如果需要访问远程文件,必须在PHP的配置文件中激活“allow_url_fopen”选项,才能使用fopen()函数打开远程文件。而且还要确定其他服务器中的文件是否有访问权限,如果使用HTTP协议对远程文件进行连接,只能以“只读”模式打开。如果需要访问的远程FTP服务器中,对所提供的用户开启了“可写”权限,则使用FTP协议连接远程的文件时,就可以使用“只写”或“只读”模式打开文件。但不可以使用“可读可写”的模式。
使用PHP访问远程文件就像访问本地文件一样,都是使用相同的读写函数处理。代码示例如下:
$file = fopen("http://www.lampbrother.com/","r") or die("打开远程文件失败!");
while(!feof($file))
{
$line = fgets($file,1024); //每读取一行
if(preg_match("/<title>(.*)</title>/",$line,$out)) //如果找到远程文件中的标题标记则取出标题,并退出循环,不在读取文件
{
$title = $out[1];
break;
}
}
fclose($file); //关闭文件资源
echo $title; //输出获取到的远程网页的标题