PHP中其它常用的文件操作函数
PHP中其它常用的文件操作函数
在PHP中,除了前面讲到的最常用的fopen()、fwrite()、fread()函数之外,还有其它许多有用的内置文件操作函数。这些函数有的可以单独使用,有的需要配合其它的函数才能够起作用。下面我们就一起来看看这些函数吧。
1、查看文件是否存在:file_exists()函数
如果在打开一个文件之前,先检查一下该文件是否存在,就可以使用file_exists()函数。在进行只读文件操作时,该函数可以用在fopen()函数之前,在不打开文件的前提下,检查要打开的文件是否存在。该函数使用实例如下:
if(file_exists("DOCUMENT_ROOT/../books.txt")) {
echo 'There have books you can read.';
}else {
echo 'There have no book';
}
2、确定文件大小:filesize()函数
filesize()函数可以用来查看一个文件的大小。在进行文件下载操作的时候,基本上都要获取下载文件的大小,我们就可以使用该函数,将获取的文件大小传给实现文件下载功能的函数。filesize()函数使用实例如下:
echo filesize("DOCUMENT_ROOT/../books.txt"));
它以字节为单位返回一个文件的大小,结合fread()函数,可以使用它们一次读取整个文件(或者文件的某一部分)。可以用如下代码来实现:
$fp = fopen("DOCUMENT_ROOT/../books.txt"));
echo nl2br(fread($fp, filesize("DOCUMENT_ROOT/../books.txt")));
fclose($fp);
请注意,上面代码中的nl2br函数将输出的n字符转换成HTML的换行符(<br/>)。
3、删除一个文件:unlink()函数
在文件不需要的时候,我们可能会删除该文件,就可以使用unlink()函数。(PHP中没有名为delete的函数)。该函数的使用方法如下:
unlink("DOCUMENT_ROOT/../books.txt"));
如果无法删除这个文件,该函数将返回一个false。通常,如果对该文件的访问权限不够或者该文件不存在,该函数将返回false。
4、在文件中定位:rewind()、fseek()和ftell()函数
在PHP中,可以使用rewind()、fseek()和ftell()函数对文件指针进行操作,或者确定发现它在文件中的位置。
rewind()函数可以将文件指针复位到文件开始。ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。例如,我们可以在脚本结束处添加如下几行代码(fclose()函数之前):
$file=("file.txt");
if(is_file($file)){ //判断文件是否存在
echo "文件总字节数:".filesize($file)."</br>"; //输出总字节数
$fopen=fopen($file,'rb'); //打开文件
echo "初始指针的位置是:".ftell($fopen)."</br>";//输出指针位置
fseek($fopen,50); //移动指针
echo "使用fseek()函数后指针的位置:".ftell($fopen)."</br>"; //输出移动后的指针位置
echo "输出当前指针后面的内容:".fgets($fopen)."</br>"; //输出从当前指针到行尾的内容
if(feof($fopen)) //判断指针是否指向文件末尾
echo "当前指针指向文件末尾:".ftell($fopen)."</br>"; //如果指向了文件尾,则输出指针的位置
rewind($fopen); //使用rewind()函数
echo "使用rewind()函数后指针的位置:".ftell($fopen)."</br>"; //查看使用rewind()函数后指针的位置
echo "输出当前33个字节的内容:".fgets($fopen,33); //输出前33个字节的内容
fclose($fopen);
}else{
echo "文件不存在!";
}
该脚本在浏览器中的输出如下图所示。
你也可以使用用fseek()函数将文件指针指向文件的某个位置。其函数原型如下所示:
int fseek (resource fp, int offset, [int whence]);
调用fseek()函数可以将文件指针fp从whence位置移动offset个字节。whence是一个可选参数,其默认值SEEk_SET表示文件开始位置。该参数的其它可能值为SEEK_CUR(文件指针的当前位置)和SEEK_END(文件结束位置)。rewind()函数等价于一个具有零偏移量的fseek()函数。可以使用fseek()函数找到文件中间的记录,或者完成一个二进制查找。通常,如果所涉及的数据文件具有一定的复杂程序,在必须完成这些操作时,使用数据库可以使得这些工作变得更加简单。