PHP文件与目录操作示例


Posted in PHP onDecember 24, 2016

本文实例讲述了PHP文件与目录操作。分享给大家供大家参考,具体如下:

文件目录相关函数

<?php
// 输出目录中的文件
function outputcurfiles ($allowedtypes, $thedir){
//首先,我们确保目录存在。
if (is_dir ($thedir)){
 //现在,我们使用scandir扫描目录中的文件。
 $scanarray = scandir ($thedir);
 //接着我们开始解析数组。
 //scandir()用“.”和“..”统计文件导航列表
 //因此作为文件,我们不应该列出他们。
 for ($i = 0; $i < count ($scanarray); $i++){
  if ($scanarray[$i] != "." && $scanarray[$i] != ".."){
   //现在,进行检查,以确保这是一个文件,而不是一个目录。
   if (is_file ($thedir . "/" . $scanarray[$i])){
    //现在,因为我们将允许客户端编辑这个文件,
    //我们必须检查它是否是可读和可写。
    if (is_writable ($thedir. "/" . $scanarray[$i]) &&  is_readable($thedir . "/" . $scanarray[$i])){
     //现在,我们检查文件类型是否存在于允许的类型数组中.
     $thepath = pathinfo ($thedir . "/" . $scanarray[$i]);
     if (in_array ($thepath['extension'], $allowedtypes)){
      //如果文件符合规定,我们可以继续输出.
      echo $scanarray[$i] . "<br />";
     }
    }
   }
  }
 }
} else {
 echo "对不起,这个目录不存在.";
}
}
$allowedtypes = array ("txt","html");
outputcurfiles ($allowedtypes, "testfolder");
///////////////////////////////////////////////////
function recurdir ($thedir) {
  //First attempt to open the directory.
  try {
    if ($adir = opendir ($thedir)){
      //扫描目录。
      while (false !== ($anitem = readdir ($adir))){
        //不统计目录中包含“.”或“..”的情况
        if ($anitem != "." && $anitem != ".."){
          //此时如果是一个目录,则缩进一点
          //再去递归
          if (is_dir ($thedir . "/" . $anitem)){
            ?><span style="font-weight: bold;" mce_style="font-weight: bold;"><?php echo $anitem; ?></span><?php
            ?><div style="margin-left: 10px;" mce_style="margin-left:10px;"><?php
            recurdir ($thedir . "/" . $anitem );
            ?></div><?php
          } elseif (is_file ($thedir . "/" . $anitem)){
            //此时输出文件.
            echo $anitem . "<br />";
          }
        }
      }
    } else {
      throw new exception ("Sorry, directory could not be openend.");
    }
  } catch (exception $e) {
    echo $e->getmessage();
  }
}
echo "<br />/////////////////////////////////////<br /><br />";
recurdir("testfolder");
//////////////////////////////////////////////////////////////////
echo "<br />/////////////////////////////////////<br /><br />";
function sortfilesbydate ($thedir){
  //首先,需要确保目录存在。
  if (is_dir ($thedir)){
    //接着,我们使用scandir扫描此目录中的文件.
    $scanarray = scandir ($thedir);
    $finalarray = array();
    //然后开始解析数组
    //scandir()用“.”和“..”统计文件导航列表
    //因此作为文件,我们不应该列出他们.
    for ($i = 0; $i < count ($scanarray); $i++){
      if ($scanarray[$i] != "." && $scanarray[$i] != ".."){
        //现在,我们检查,以确保这是一个文件,而不是一个目录.
        if (is_file ($thedir . "/" . $scanarray[$i])){
          //现在需要做的是循环数据到一个关联数组.
          $finalarray[$thedir . "/" . $scanarray[$i]] = filemtime ($thedir . "/" . $scanarray[$i]);
        }
      }
    }
    //至此,我们已经遍历了整个数组,现在需要做的只是asort()它。
    asort ($finalarray);
    return ($finalarray);
  } else {
    echo "对不起,这个目录不存在.";
  }
}
//然后,我们将函数指向我们需要查看的目录.
$sortedarray = sortfilesbydate ("testfolder");
//至此,就可以按照如下形式输出:
while ($element = each ($sortedarray)){
  echo "File: " . $element['key'] . " was last modified: " . date ("F j, Y h:i:s", $element['value']) . "<br />";
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php正则
Jul 07 PHP
如何使用动态共享对象的模式来安装PHP
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
smarty简单入门实例
Nov 28 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php设计模式之委托模式
Feb 13 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 #PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
Dec 24 #PHP
PHP会话控制实例分析
Dec 24 #PHP
PHP面向对象程序设计方法实例详解
Dec 24 #PHP
PHP数据库处理封装类实例
Dec 24 #PHP
如何判断php mysqli扩展类是否开启
Dec 24 #PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 #PHP
You might like
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
python正则表达式之作业计算器
2016/03/18 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
创先争优个人承诺书
2014/08/30 职场文书
股东合作协议书
2014/09/12 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
医院党建工作总结2015
2015/05/26 职场文书
养成教育主题班会
2015/08/13 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis