龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

详谈PHP文件目录基础操作(2)

时间:2014-11-16 11:01来源:网络整理 作者:网络 点击:
分享到:
复制代码 代码如下: php function getFileInfo($path){ if(!file_exists($path)){ // 判断文件是否存在 echo 'file not exists!br'; return; } if(is_file($path)){ // 是文件,打印基础文件

复制代码 代码如下:

<?php
    function getFileInfo($path){
         if(!file_exists($path)){     // 判断文件是否存在
             echo 'file not exists!<br>';
             return;
         }
         if(is_file($path)){    // 是文件,打印基础文件名
             echo basename($path).' is a file<br>';
         }
         if(is_dir($path)){    // 是目录 ,返回目录
             echo dirname($path).' is a directory<br>';
         }
         echo 'file type:'.getFileType($path).'<br>';  // 获取文件类型
         echo 'file size:'.getSize($path).'<br>';  // 获取文件大小
         if(is_readable($path)){   // 是否可读
             echo basename($path).' is readable<br>';
         }
         if(is_writeable($path)){  // 是否可写
             echo basename($path).' is writeable<br>';
         }
         if(is_executable($path)){  // 是否可执行
             echo basename($path).' is executable<br>';
         }
         // touch函数可以修改这些时间
         echo 'file create time: '.date('Y-m-d H:i:s', filectime($path)).'<br>';   // 创建时间
         echo 'file modify time: '.date('Y-m-d H:i:s', filemtime($path)).'<br>';   // 修改时间
         echo 'last access time: '.date('Y-m-d H:i:s', fileatime($path)).'<br>';   // 上次访问时间
         echo 'file owner: '.fileowner($path).'<br>';   // 文件拥有者
         echo 'file permission: '.substr(sprintf('%o', (fileperms($path))), -4).'<br>';   // 文件权限,八进制输出
         echo 'file group: '.filegroup($path).'<br>';   // 文件所在的组
     }

效果如下:

代码中还用到了文件权限、所在组等函数,有必要解释下(说的不对请修正)。一个文件的权限分为可读可写可执行,一般这样表示:rwx,字母对应的表示可读可写可执行,从前往后规定值为4、2、1,三个值相加的结果最大为7,因此0666用的是八进制表示,这样看起来就很方便。为7则表示这个文件具备这三个权限,那为什么打印的是0666呢?我们都知道,进入windows下面是有一个用户的,在Linux下边,与windows类似,也是有一个用户登录进去,因此一个文件可能为该用户所有,一个用户它还有自己所在的组,以及该系统中还有其他组(猜想这样分应该是管理上的需要),因此对于0666,对于第一个6,表示该用户对该文件的权限,第二个6表示该用户所在的组对该文件的权限,第三个6表示其他的组所具有的权限(这样就不用一一去区分除本组外其他的用户了),6就知道该文件是可读可写的(win下可执行都知道是.exe文件)。

2.目录操作

目录的读取,opendir:打开一个目录,返回一个句柄,指向该目录中的内容,如果把目录中的内容看成一个有顺序的数据,比如按顺序的排列的数组,这个句柄就指向这个数组的开头,事实上,系统会把该目录中的内容按照字典排序,无论是文件还是子目录。readdir:读取下一个目录内容,返回文件名,并自动指向该目录中的下一个文件/目录,所以读取一个目录中的内容,不包括子目录中的内容,需要一个循环来控制,在读取完后,还要关闭句柄变量,C语言读取文件时也是这样,打开就有关闭。以我的机子举例:

精彩图集

赞助商链接