一、学几个基本的php文件操作函数
1、readfile(fileURL) :读取文件,并写入缓冲区。
例:echo readfile("text/txt1.txt"); //打印与当前页面位置同级的text目录下的txt1.txt 文件内容。
说明:php 文件的url比较方便,因为不需像JSP 中配置web.xml,只需文件路径遵循服务器资源路径即可。具体可见:服务器类笔记。
2、fopen(fileURL,model):以模式model 获得打开文件fileURL的句柄。
model说明:(r、w、a、x)
r:只读,文件指针从开头开始。
r+:读或写,其余同。
w:只写,写之前会删除原有内容。文件不存在时,会创建文件。指针从开头开始。
w+:读或写,其余同。
a:append的意思,从原来内容的结尾处开始追加内容。文件不存在时,会创建文件。
a+:读或写,其余同。
x:创建新文件为只写。如果文件已经存在,返回false或错误。
x+:读或写,其余同。
注意:在区分二进制与文本文件的系统(如windows)上,fopen()的model参数要加上b,如fopen("test.txt","rb");
文件句柄可有fopen()或fsockopen()获得。
3、fread($fileHandle,size):fileHandle为fopen等打开的文件,size为读取的最大字节数。
例:
$myfile=fopen("test.txt","rb");
$readFile=fread($myfile,filesize("test.txt"));
echo $readFile;
说明:filesize(fileURL)返回该文件的长度。(文件指针指向0表示第一个字节)
4、fclose($fileHandle):关闭文件句柄。
例:关闭上面的文件访问:
fclose($myfile);
5、fgets($fileHandle,length):返回长度最多为length-1个字节的字符串。发生错误时返回false。
在遇到EOF 或换行符时,提前停止读取。length默认为1k,即1024字节。
语法:
fgets($fileHandle,size);
Note:
从 PHP 4.3 开始,忽略掉 length 则行的长度被假定为 1024,将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB,则在脚本中指定最大行的长度在利用资源上更为有效。
文档示例:逐行读取文件。
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
?>
更多详细文件读取方法查看:
http://php.net/search.php?show=quickref&pattern=fgets
6、feof($fileHandle):判断是否到达文件尾。
示例:见上。
7、fgetc($fileHandle):读取单个字符。
示例:逐个读取单个字符,直到文件尾。
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 输出单字符直到 end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
注:fgetc()和有的文件读取函数,指针会随读取自动更新。
8、fwrite($fileHandle,$txt):将字符串$txt 写入文件中。
例:上一小节的留言板处理中:
$fop=fopen("leaveMsgs.txt", 'r');
fwrite($fop, $_GET['msgTheme'].":".$_GET['msgContent']."\n");
fclose($fop);
小结:
获得文件句柄:
fopen()、fsockopen();
读:
readfile($fileHandle);
fread($fileHandle,length):读取length-1个字节。
fgets($fileHandle,length):读取规定长度。遇到换行符或eof提前结束。实践发现,模式为w或w+时,使用此函数无效。
fgetc($fileHandle):读取单个字符,指针自动加1。
写:
fwrite($fileHandle,$txt):将$txt 写入文件。模式由fopen决定。
判断:
filesize(fileURL):返回文件长度length-1。
feof($fileHandle):返回true/false,判断结尾。
关闭:
fclose($fileHandle);