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 相关文章推荐
分页显示Oracle数据库记录的类之一
Oct 09 PHP
php 随机排序广告的实现代码
May 09 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
PHP eval函数使用介绍
Dec 08 PHP
深入理解PHP中的count函数
May 31 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 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 判断变量类型实现代码
2009/10/23 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
js验证表单第二部分
2006/11/25 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
详解Python中for循环是如何工作的
2017/06/30 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python next()和iter()函数原理解析
2020/02/07 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
销售求职信范文
2014/05/26 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
单位未婚证明范本
2014/11/25 职场文书
安全先进个人材料
2014/12/29 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL