PHP笔记 | 文件系统

1. PHP文件系统之读取文件内容
  • 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关闭文件指针,以避免文件句柄被占用。



2. PHP文件系统之判断文件是否存在
  • 一般情况下在对文件进行操作的时候需要先判断文件是否存在
    PHP中常用来判断文件存在的函数两个——is_filefile_exists.
  • 如果只是判断文件存在
    使用file_exists就行,
    file_exists不仅可以判断文件是否存在
    同时也可以判断目录是否存在

    函数名可以看出,
    is_file是确切的判断给定的路径是否是一个文件
$filename = './test.txt';
if (file_exists($filename)) {
    echo file_get_contents($filename);
}
$filename = './test.txt';
if (is_file($filename)) {
    echo file_get_contents($filename);
}
  • 更加精确的可以使用is_readableis_writeable文件是否存在的基础上,
    判断文件是否可读可写
$filename = './test.txt';
if (is_writeable($filename)) {
    file_put_contents($filename, 'test');
}
if (is_readable($filename)) {
    echo file_get_contents($filename);
}

demo:

<?php
$filename = '/data/webroot/usercode/code/resource/test.txt';
//判断如果$filename文件存在的话 就输出文件内容
if(file_exists($filename)){
    echo '文件存在';
}else{
    echo '文件不存在';
}



3. PHP文件系统之取得文件的修改时间
  • 文件有很多元属性
    包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

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

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

date('Y-m-d H:i:s',time()) 按24小时制
date('Y-m-d h:i:s',time()) 按12小时制

  • 'Y-m-d H:i:s'——年月日 时分秒
$mtime = filemtime($filename);
echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));

demo:

<?php
$filename = '/data/webroot/usercode/code/resource/test.txt';
echo '所有者:'.fileowner($filename).'<br>';
echo '创建时间:'.filectime($filename).'<br>';
echo '修改时间:'.filemtime($filename).'<br>';
echo '最后访问时间:'.fileatime($filename).'<br>';

//给$mtime赋值为文件的修改时间
$mtime =  filemtime($filename); 
//通过计算时间差 来判断文件内容是否有效
if (time() - $mtime > 3600) {
    echo '<br>缓存已过期';
} else {
    echo file_get_contents($filename);
}



4. PHP文件系统之取得文件的大小
  • 通过filesize函数可以取得文件的大小,文件大小是以字节数(也就是b)表示的。
  • 所以filesize函数的输出结果要改成“kb”为单位的话,便需除以1024的一次方
    要改成‘mb’的话,则需除以1024的二次方,以此类推;
    其demo自定义函数见下方第二个代码块;
$filename = '/data/webroot/usercode/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';
  • 值得注意的是,没法通过简单的函数来取得目录的大小
    目录的大小是该目录下所有子目录以及文件大小总和
    因此需要通过递归的方法来循环计算目录的大小



5. PHP文件系统之写入内容到文件
  • 与读取文件对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents
$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);

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

  • 同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。
$fp = fopen('./test.txt', 'w');
fwrite($fp, 'hello');
fwrite($fp, 'world');
fclose($fp);

又有写法:

$fp = fopen($filename, 'w');
fwrite($fp, 'hello world'); 
fclose($fp); 
--------------------------

file_put_contents($filename, 'hello world');



6. PHP文件系统之删除文件
  • Unix系统命令类似,PHP使用unlink函数进行文件删除
unlink($filename);
  • 删除文件夹使用rmdir函数,
    文件夹必须为空
    如果不为空或者没有权限则会提示失败
rmdir($dir);
  • 如果文件夹中存在文件
    可以先循环删除目录中的所有文件
    然后再删除该目录
    循环删除可以使用glob函数遍历所有文件
foreach (glob("*") as $filename) {
   unlink($filename);
}

主要参考资料(慕课网.PHP进阶篇)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。
数字社区解决方案是一套综合性的系统,旨在通过新基建实现社区的数字化转型,打通智慧城市建设的"最后一公里"。该方案以国家政策为背景,响应了国务院、公安部和中央政法会议的号召,强调了社会治安防控体系的建设以及社区治理创新的重要性。 该方案的建设标准由中央综治办牵头,采用"9+X"模式,通过信息采集、案(事)件流转等手段,实现五级信息中心的互联互通,提升综治工作的可预见性、精确性和高效性。然而,当前社区面临信息化管理手段不足、安全隐患、人员动向难以掌握和数据资源融合难等问题。 为了解决这些问题,数字社区建设目标提出了"通-治-服"的治理理念,通过街道社区、区政府、公安部门和居民的共同努力,实现社区的平安、幸福和便捷。建设思路围绕"3+N"模式,即人工智能、物联网和数据资源,结合态势感知、业务分析和指挥调度,构建起一个全面的数据支持系统。 数字社区的治理体系通过"一张图"实现社区内各维度的综合态势可视化,"一套表"进行业务分析,"一张网"完成指挥调度。这些工具共同提升了社区治理的智能化和效率。同时,数字社区还提供了包括智慧通行、智慧环保、居家养老和便民服务等在内的多样化数字服务,旨在提升居民的生活质量。 在硬件方面,数字社区拥有IOT物联网边缘网关盒子和AI边缘分析盒子,这些设备能够快速集成老旧小区的物联设备,实现传统摄像设备的智能化改造。平台优势体现在数字化能力中台和多样化的应用,支持云、边、端的协同工作,实现模块化集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌川江雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值