5-1 PHP 文件系统之读取文件内容
file_get_contents(), 将整个文件读取作为一个字符串。
$content = file_get_contents('./test.txt');
file_get_contents 也可以通过参数设置,控制读取内容的开始点和长度。
$content = file_get_contents('./test.txt', null, null, 100, 500);
PHP 也提供了类似于 C 语言操作文件的方法 。 fopen , fgets, fread —- fgets 可以读取文件指针指向的一行, fread 可以读取制定长度的字符串。
$fp = fopen('./test.txt', 'rb');
while(!feof($fp)){ // feof 测试文件指针是否到了文件结束的位置
echo fgets($fp);
}
fclose($fp);
$fp = fopen('./test.txt', 'rb');
$contents = '';
while(!feof($fp)){
$contents .= fread($fp, 4096); // 一次读取 4096 个字节。
}
fclose($fp); // 使用 fopen 打开的文件,最好使用 fclose 关闭文件指针,以避免文件句柄被占用
5-2 PHP 文件系统之判断文件是否存在
一般来说,对文件进行操作之前需要先判断文件是否存在,PHP 中常用来判断文件存在的函数有两个 is_file() 和 file_exists();
$filename = './test.txt';
if(file_exists($filename)){
echo file_get_contents($filename);
}
如果只是判断文件存在,使用 file_exists() 就行, file_exists() 不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出, is_file() 是用来判断给的路径是不是一个文件。
$filename = './test.txt';
if(is_file($filename){
echo file_get_contents($filename);
}
更精确的可以使用 is_readable() 和 is_writeable() ,这在 文件是否存在的基础上判断是否可以读写。
$filename = "./test.txt";
if(is_writeable('$filename')){
file_put_contents($filename, 'test');
}
if(is_readable($filename)){
echo file_get_contents($filename);
}
5-3 PHP 文件系统之取得文件的修改时间
文件有很多元属性,包括文件的所有者,创建时间,修改时间,最后访问时间
fileowner : 获得文件的所有者 filectime : 文件创建时间 filemtime : 文件编辑时间 fileatime : 文件访问时间
其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件和缓存数据的更新
$mtime = filemtime($filename);
echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));
5-4 PHP 文件系统之取得文件的大小
可以用 filesize() 函数取得文件的大小,文件的大小是以字节数来表示的。
$filename = './test.txt';
$size = filesize($filename);
如果要转换文件大小的单位,可以自己定义函数来实现:
function getSize($size, $format='kb'){
$p = 0;
if($format == 'kb'){
$p = 1;
}elseif($format == 'mb'){
$p = 2;
}elseif($format == 'gb'){
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3);
}
$filename = './test.txt';
$size = filesize($filename);
$size = getSize($size, 'kb');
echo $size . ‘kb';
5-5 PHP 文件系统之写入内容到文件
php 写文件有两种方式, 1、 file_put_contents
$filename = './test.txt';
$content = 'test'; // $content 可以是一个数组,数组的情况下,会自动将数组连接起来
if(is_writeable($filename)){
file_put_contents($filename, $content);
}
2、fwrite
$fp = fopen('test.txt');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);
5-6 PHP 文件系统之删除文件
跟 Uninx 系统类似, PHP 使用 unlink() 函数删除文件
unlink($filename);
删除文件夹使用 rmdir 函数,文件夹必须为空,如果不为空或者没有权限,会提示失败。
rmdir($dir);
如果文件夹中存在文件,可以使用 glob 函数遍历所有文件
foreach(glob("*") as $filename){
unlink($filename);
}