PHP进阶(第五弹:文件系统)
2017-09-04 23:29
423 查看
读取文件
PHP中最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中。如:
$content = file_get_contents('./test.txt');
file_get_contents也可以通过参数控制读取内容的开始点以及长度。如:
$content = file_get_contents('./test.txt', null, null, 100, 500);
也可以使用fopen,fgets,fread等方法来读取文件,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。如:
$fp = fopen('./text.txt', 'rb'); while(!feof($fp)) { echo fgets($fp); //读取一行 //echo fread($fp, 1028); // 一次读取1028个字符 } fclose($fp);
使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。
写入文件
最简单的方式是采用file_put_contents。
$filename = './test.txt'; $data = 'test'; file_put_contents($filename, $data); // 此处$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组连接起来,相当于$data=implode('', $data);
也可以使用fwrite进行文件写入。
$fp = fopen('./test.txt', 'w'); fwrite($fp, 'hello'); fwrite($fp, 'world'); fclose($fp);
判断文件是否存在
常用来判断文件存在的函数有两个is_file与
file_exists。
$filename = './test.txt'; if (file_exists($filename)) { echo file_get_contents($filename); }
file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,而
is_file是确切的判断给定的路径是否是一个文件。
可以使用
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); }
取得文件的元属性
文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。fileowner:获得文件的所有者
filectime:获取文件的创建时间
filemtime:获取文件的修改时间
fileatime:获取文件的访问时间
其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。
$filename = './test.txt'; echo '所有者:'.fileowner($filename).'<br>'; echo '创建时间:'.filectime($filename).'<br>'; echo '修改时间:'.filemtime($filename).'<br>'; echo '最后访问时间:'.fileatime($filename).'<br>'; $mtime = filemtime($filename); // 通过计算时间差来判断文件内容是否有效 if (time() - $mtime > 3600) { echo '<br>缓存已过期'; } else { echo file_get_contents($filename); }
取得文件的大小
filesize函数可以取得文件的大小,文件大小以字节数表示。$filename = './test.txt'; $size = filesize($filename);
没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有子目录以及文件大小的总和,因此需要通过递归的方法来循环计算目录的大小。
删除文件
使用unlink函数进行文件删除。unlink($filename);
删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。
rmdir($dir);
如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。
foreach (glob("*") as $filename) { unlink($filename); }
相关文章推荐
- 慕课网——PHP进阶篇(文件系统)
- PHP文件系统-文件的读写操作
- PHP文件处理系统
- [PHP学习教程 - 系统]001.引用文件(require & include)
- PHP文件系统
- windows的文件系统机制引发的PHP路径爆破问题分析
- php以fastCGI的方式运行时文件系统权限问题及解决方法
- PHP - 文件系统
- PHP 文件系统函数分类总结
- 简单的php文件上传系统
- php学习基础-文件系统(三) 文件夹的相关操作、php文件上传、php文件下载
- NFS网络文件系统进阶
- PHP与服务器文件系统的简单交互
- 对比JAVA学习PHP系列:应用:php的文件系统处理
- php基础入门六(文件系统)
- PHP:文件系统
- php文件系统函数库
- PHP文件相关处理(本地文件处理系统)
- php 登录操作的文件上传管理系统
- PHP - Manual手册 - 函数参考 - Filesystem 文件系统函数 - file_exists检查文件或目录是否存在