问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP5教程之文件操作

发布网友 发布时间:2022-12-26 16:52

我来回答

1个回答

热心网友 时间:2023-10-16 11:23

  一 引论

  在任何计算机设备中 文件是都是必须的对象 而在web编程中 文件的操作一直是web程序员的头疼的地方 而 文件的操作在cms系统中这是必须的 非常有用的 我们经常遇到生成文件目录 文件(夹)编辑等操作 现在我把php中的这些函数做一详细总结并实例示范如何使用 关于对应的函数详细介绍 请查阅php手册 此处只总结重点 和需要注意的地方 (这在php手册是没有的 )( lian )

  二 目录操作

  首先介绍的是一个从目录读取的函数 opendir() readdir() closedir() 使用的时候是先打开文件句柄 而后迭代列出:

  <?php $base_dir = filelist/ ; $fso = opendir($base_dir); echo $base_dir <hr/> ; while($flist=readdir($fso)){ echo $flist <br/> ; } closedir($fso) ?> 

  这是讲返回文件目录下面的文件已经目录的程序( 文件将返回false)

  有时候需要知道目录的信息 可以使用dirname($path)和basename($path) 分别返回路径的目录部分和文件名名称部分 可用disk_free_space($path)返回看空间空余空间

  创建命令:

  mkdir($path )

   是权限码 在非window下可用umask()函数设置

  rmdir($path)

  将删除路径在$path的文件

  dir directory 类也是操作文件目录的重要类 有 个方法 read rewind close 这是一个仿面向对象的类 它先使用的是打开文件句柄 然后用指针的方式读取的 这里看php手册:

  <?php$d = dir( /etc/php );echo Handle: $d >handle /n ;echo Path: $d >path /n ;while (false !== ($entry = $d >read())) {    echo $entry /n ;}$d >close();?>

  输出:

  Handle: Resource id # Path: /etc/php apachecgicli

  文件的属性也非常重要 文件属性包括创建时间 最后修改时间 所有者 文件组 类型 大小等

  下面我们重点谈文件操作

  三 文件操作

  A 读文件

  首先是一个文件看能不能读取(权限问题) 或者存在不 我们可以用is_readable函数获取信息

  <?php$file = dirlist php ;if (is_readable($file) == false) {         die( 文件不存在或者无法读取 );} else {         echo 存在 ;}?> 

  判断文件存在的函数还有file_exists(下面演示) 但是这个显然无is_readable全面 当一个文件存在的话可以用

  <?php$file = filelist php ;if (file_exists($file) == false) {         die( 文件不存在 );}$data = file_get_contents($file);echo entities($data);?> 

  但是file_get_contents函数在较低版本上不支持 可以先创建文件的一个句柄 然后用指针读取全部:

  $fso = fopen($cacheFile r );         $data = fread($fso filesize($cacheFile));         fclose($fso);

  还有一种方式 可以读取二进制的文件:

  $data = implode( file($file));

  B 写文件

  和读取文件的方式一样 先看看是不是能写:

  <?php$file = dirlist php ;if (is_writable($file) == false) {         die( 我是鸡毛 我不能 );}?> 

  能写了的话可以使用file_put_contents函数写入:

  <?php $file = dirlist php ; if (is_writable($file) == false) { die( 我是鸡毛 我不能 ); } $data = 我是可鄙 我想要 ; file_put_contents ($file $data); ?> 

  file_put_contents函数在php 中新引进的函数(不知道存在的话用function_exists函数先判断一下)低版本的php无法使用 可以使用如下方式:

  $f = fopen($file w ); fwrite($f $data); fclose($f); 

  替换之

  写文件的时候有时候需要锁定 然后写:

  function cache_page($pageurl $pagedata){ if(!$fso=fopen($pageurl w )){ $this >warns( 无法打开缓存文件 );//trigger_error return false; } if(!flock($fso LOCK_EX)){//LOCK_NB 排它型锁定 $this >warns( 无法锁定缓存文件 );//trigger_error return false; } if(!fwrite($fso $pagedata)){//写入字节流 serialize写入其他格式 $this >warns( 无法写入缓存文件 );//trigger_error return false; } flock($fso LOCK_UN);//释放锁定 fclose($fso); return true; } 

  C 复制 删除文件

  php删除文件非常easy 用unlink函数简单操作:

  <?php $file = dirlist php ; $result = @unlink ($file); if ($result == false) { echo 蚊子赶走了 ; } else { echo 无法赶走 ; } ?> 

  即可

  复制文件也很容易:

  <?php $file = yang txt ; $newfile = ji txt ; # 这个文件父文件夹必须能写 if (file_exists($file) == false) { die ( 小样没上线 无法复制 ); } $result = copy($file $newfile); if ($result == false) { echo 复制记忆ok ; } ?> 

  可以使用rename()函数重命名一个文件夹 其他操作都是这几个函数组合一下就能实现的

  D 获取文件属性

  我说几个常见的函数:

  获取最近修改时间:

  <?php $file = test txt ; echo date( r filemtime($file)); ?> 

  返回的说unix的时间戳 这在缓存技术常用

  相关的还有获取上次被访问的时间fileatime() filectime()当文件的权限 所有者 所有组或其它 inode 中的元数据被更新时间 fileowner()函数返回文件所有者

  $owner = posix_getpwuid(fileowner($file)); 

  (非window系统) ileperms()获取文件的权限

  <?php$file = dirlist php ;$perms = substr(sprintf( %o fileperms($file)) );echo $perms;?> 

  filesize()返回文件大小的字节数:

  <?php

  // 输出类似 somefile txt: bytes

  $filename = somefile txt ; echo $filename : filesize($filename) bytes ;

  ?> 

  获取文件的全部信息有个返回数组的函数stat()函数:

  <?php $file = dirlist php ; $perms = stat($file); var_mp($perms); ?> 

  那个键对应什么可以查阅详细资料 此处不再展开

  四 结束语

lishixin/Article/program/PHP/201311/21262
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国产钢琴哪些品牌大全 hailun是什么牌子钢琴 人工智能时代的职业特点 人工智能硬件选哪家专业? 剁椒鱼头的做法简单三步 热水器出水口根部漏水怎么办 电热水器为什么用时间长了底部会漏水? ps不能填充因为暂存盘已满 北京哪个板面店培训 北京成寿寺小吃街有哪些 《这一刻,说再见》微电影 主题曲是什么歌? 你说你要的是最真挚的爱情,不是虚伪的告白是哪首歌曲? 求《初见》主题曲 《停滞的时光》 吉他谱! 收益的资本化什么意思 成都光明城市的户口可以买天府新区的房吗? 四川光明城别称 成都光明城市花园12栋属于什么街道 湖南师大附中2015届高三月考试卷 政治 历史 (二) 中国电影始于多少年前 mini3pro最低温度 代表黑色的象征物 键盘如何退出全屏模式 想开一家粥铺呀,不知道哪一家加盟好呀 胆石己在体内被药物碎细怎样排出 买的鱼缸底砂石己淘洗多次,又浸了好多天,今天准备入缸,洗时发现水又浑浊,怎么回事,请各位赐教怎样清 石字加个己字念什么 微信邮箱里怎么发简历 微信上怎么发简历 电脑关机word文件没了怎么办 如何选择职业生涯规划方向? 天正电气平面布线会卡顿 天正2014打开图纸总是卡死怎么办 CAB周琦个人资料身高,CAB周琦个人资料身高 为什么惠普战66点开office是空白的 有什么好看的小说没!!!要合适男的看的。言情、校园的就不用了我是个新手........没分的啊!!! 新中国男篮集训大名单 刘劲简介及详细资料 找好看的仙侠小说 有魔法和神魔的玄幻小说求推荐!! 餐厅设计公司哪一家好啊? 一个手机怎么开通两个 如何在同一部手机上同时登陆两个 苹果6私密相册v2.3忘记密码怎么办 苹果6自己设置的密码忘了怎么办 pdf怎么可以把部分内容遮盖 妃子被皇上扒光强吻视讯 区块链也能玩食安 IBM「食品产销履历」用区块链技术让家乐福食品更安全 电脑睡眠开不开机怎么办 华为手机关机不能连接电脑没反应怎么办 我12岁男孩,昨天我们班上的老大,他很凶,他让我把我的底裤脱了给他穿,我不肯脱底裤,他就打了我一拳?