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下MAIL的另一解决方案
Oct 09 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
利用PHP生成静态HTML文档的原理
Oct 29 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
php无限遍历目录示例
Feb 21 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 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调用Java对象的方法
2006/10/09 PHP
图象函数中的中文显示
2006/10/09 PHP
smarty实例教程
2006/11/19 PHP
php 魔术方法详解
2014/11/11 PHP
php实现源代码加密的方法
2015/07/11 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
如何利用Python识别图片中的文字
2020/05/31 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python编写实现抽奖器
2020/09/10 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
C,C++的几个面试题小集
2013/07/13 面试题
大专应届生个人的自我评价
2013/11/21 职场文书
人民检察院起诉书
2015/05/20 职场文书
教师个人教学反思
2016/02/23 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Golang 实现WebSockets
2022/04/24 Golang
Python+DeOldify实现老照片上色功能
2022/06/21 Python