PHP文件系统

php中文网
发布: 2016-06-23 13:30:15
原创
1153人浏览过

读取文件内容

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可以从文件指针中读取一行,freads可以读取指定长度的字符串。

$fp = fopen('./text.txt', 'rb');while(!feof($fp)) {    echo fgets($fp); //读取一行}fclose($fp);
登录后复制

 

$fp = fopen('./text.txt', 'rb');$contents = '';while(!feof($fp)) {    $contents .= fread($fp, 4096); //一次读取4096个字符}fclose($fp);
登录后复制

使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。

立即学习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);}
登录后复制

写入内容到文件

与读取文件对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。

$filename = './test.txt';$data = 'test';file_put_contents($filename, $data);
登录后复制

上例中,$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组连接起来,相当于$data=implode('', $data);

同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。

巧文书
巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61
查看详情 巧文书
$fp = fopen('./test.txt', 'w');fwrite($fp, 'hello');fwrite($fp, 'world');fclose($fp);
登录后复制

取得文件的修改时间

文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

fileowner:获得文件的所有者filectime:获取文件的创建时间filemtime:获取文件的修改时间fileatime:获取文件的访问时间
登录后复制

其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

$mtime = filemtime($filename);echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));
登录后复制

取得文件的大小

通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。

$filename = '/data/webroot/usercode/code/resource/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 = '/data/webroot/usercode/code/resource/test.txt';$size = filesize($filename);$size = getsize($size, 'kb'); //进行单位转换echo $size.'kb';
登录后复制

值得注意的是,没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有子目录以及文件大小的总和,因此需要通过递归的方法来循环计算目录的大小。

删除文件

跟Unix系统命令类似,PHP使用unlink函数进行文件删除。

unlink($filename);
登录后复制

删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

rmdir($dir);
登录后复制

如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。

foreach (glob("*") as $filename) {   unlink($filename);}
登录后复制

版权声明:本文为博主原创文章,未经博主允许不得转载。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号