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()函数找到文件中间的记录,或者完成一个二进制查找。通常,如果所涉及的数据文件具有一定的复杂程序,在必须完成这些操作时,使用数据库可以使得这些工作变得更加简单。