PHP进阶(第五弹:文件系统)
来源:互联网 发布:日期倒计时软件 编辑:程序博客网 时间:2024/06/06 08:45
读取文件
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);}
阅读全文
1 0
- PHP进阶(第五弹:文件系统)
- PHP学习笔记十一之文件系统(进阶篇)
- 慕课网——PHP进阶篇(文件系统)
- PHP入门(第五弹:变量)
- PHP进阶(第一弹:数组)
- PHP进阶(第三弹:正则表达式)
- PHP进阶(第四弹:会话控制)
- PHP进阶(第六弹:异常处理)
- PHP进阶(第七弹:数据库操作)
- PHP进阶(第八弹:函数)
- Linux进阶命令&文件系统(5.5)
- 【Linux 内核】文件系统(进阶篇)
- Linux 内核文件系统(进阶篇)
- Linux进阶篇--文件系统
- PHP 进阶(四)MySQL
- PHP 进阶(五)AJAX
- PHP 进阶(一)PHP XML
- php文件系统
- 【CentOs7.x】- 安装httpd服务
- js的Base64编码与解码
- 算法笔记学习1
- HYSBZ 2565 Manacher算法
- 基本算法:生成元素数组的所有排列(permute)
- PHP进阶(第五弹:文件系统)
- 排序算法(Java)
- 设计模式--装饰器模式
- java进制转换
- 动态规划问题
- 8086寻址方式
- LeetCode
- java中的编码方式
- Java中三种流行的数据连接池