1. /*
  2. * new getFile($_dir[,$_emptyDir,$_fileType]);
  3. * @parma $_dir 是目录名称
  4. * @parma $_emptyDir 是否获取空文件夹,选填,默认不获取,true则获取空文件夹
  5. * @parma $_fileType 获取文件名称的类型,选填,默认获取只文件名称,true则获取带有路径的文件名称
  6. **/
  7. class getFiles {
  8. private $_dir;
  9. private $_emptyDir;
  10. private $_fileType;
  11. public $_files;
  12.  
  13. public function __construct($_dir,$_emptyDir = false,$_fileType = false) {
  14. $this->_dir = $_dir;
  15. $this->_emptyDir = $_emptyDir;
  16. $this->_fileType = $_fileType;
  17. if ($this->_emptyDir) {
  18. $this->getFileEmpty($this->_dir,$this->_files);
  19. } else {
  20. $this->getFile($this->_dir,$this->_files);
  21. }
  22. }
  23. //读取文件夹所有文件不包括空文件夹
  24. private function getFile($_dir,&$_arr) {
  25. if (!!$_dirs = opendir($_dir)) {
  26. while (($_file=readdir($_dirs)) != false) {
  27. if ($_file == '.' || $_file == '..') continue;
  28. $_files = $_dir .'/'. $_file;
  29. if (is_dir($_files)) {
  30. $this->getFile($_files,$_arr);
  31. } else {
  32. if ($this->_fileType) {
  33. $_arr[] = $_files;
  34. } else {
  35. $_arr[] = $_file;
  36. }
  37. }
  38. }
  39. }
  40. closedir($_dirs);
  41. }
  42. //读取文件夹所有文件包括空文件夹
  43. private function getFileEmpty($_dir,&$_arr) {
  44. if (!!$_dirs = opendir($_dir)) {
  45. while (($_file=readdir($_dirs)) != false) {
  46. if ($_file == '.' || $_file == '..') continue;
  47. $_files = $_dir .'/'. $_file;
  48. if (is_dir($_files) && $this->isEmpty($_files)) {
  49. $this->getFileEmpty($_files,$_arr);
  50. } else {
  51. if ($this->_fileType) {
  52. $_arr[] = $_files;
  53. } else {
  54. $_arr[] = $_file;
  55. }
  56. }
  57. }
  58. }
  59. closedir($_dirs);
  60. }
  61. //判断文件夹是否为空
  62. private function isEmpty($_dir) {
  63. if (!!$_dirs = opendir($_dir)) {
  64. while (($_file=readdir($_dirs)) != false) {
  65. if($_file != '.' && $_file != '..') {
  66. closedir($_dirs);
  67. return true;
  68. break;
  69. }
  70. }
  71. closedir($_dirs);
  72. return false;
  73. }
  74. }
  75. }

转载请注明出处:http://www.ly89.cn/detailB/36.html

PHP获取文件夹内所有文件包括子目录文件的名称或路径的更多相关文章

  1. C#搜索指定文件夹内的符合要求的文件

    下面的列子是文件的模糊查找, 具体功能是:选定文件夹,搜索所有文件命中包含“_bui”字样的shp图层(后缀为.shp)并将信息显示在ListView中.实际应用中可随便修改. 这里采用递归方法进行深 ...

  2. shell脚本编写某一文件夹内拷贝某一段文件(有则跳过没有则拷贝)

    必须是同一台服务器下,或者挂载目录,不同服务器下没办法查询目录中是否有该文件 如果不在同一服务器下,可以把要查询的那个服务器的文件夹设置共享挂在到当前服务器 或者可以把脚本写到要拷贝的服务器上,那么s ...

  3. ftp下载目录下所有文件及文件夹内(递归)

    ftp下载目录下所有文件及文件夹内(递归)   /// <summary> /// ftp文件上传.下载操作类 /// </summary> public class FTPH ...

  4. 用Python来实现列举某个文件夹内所有的文件列表

    用Python来实现列举某个文件夹内所有的文件列表.吾八哥我动手写代码之前分析了下,遍历一个文件夹,肯定是需要用到os模块了,查阅模块帮助信息,可知os.listdir()方法可以列举某个文件夹内的所 ...

  5. python实现某目录下将多个文件夹内的文件复制到一个文件夹中

    现实生活中,我们经常有这样的需求,如下图,有三个文件夹,文件夹1内含有1.txt文件 文件夹2中内含有2.txt文件,文件夹3中含有3.txt文件.我们有时候需要把1.txt, 2.txt, 3.tx ...

  6. PHP复制文件夹及文件夹内的文件

    //1.取被复制的文件夹的名字://2.写出新的文件夹的名字://3.调用此函数,将旧.新文件夹名字作为参数传递://4.如需复制文件夹内的文件,第三个参数传1,否则传0: public functi ...

  7. 监听Documents文件夹内文件发生改变

    // 当Documents内文件发生改变时,启动计时器,每秒计算一次大小,当大小不发生改变时说明传输完毕,就开始刷新. @property (nonatomic, strong) NSTimer *t ...

  8. Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)

    private void SMT(HttpContext context) { string SqlConnection82 = System.Configuration.ConfigurationM ...

  9. ls命名 | Linux统计文件夹内的文件个数

    ls命名 man ls -R 递归列出全部的目录内容 recusive -a 列出所有的文件(包括以 . 开头的隐藏文件) all -r 逆序排列 reverse -t 按照时间信息排序 time - ...

  10. Linux如何修改文件/文件夹内所有文件的权限

    一.修改文件权限 修改文件权限前,需要了解一下权限中的”rwx”与数字的对应关系,其中r=4,w=2,x=1. 例如:”drwxr-xr-x”,第一个”d”是代表文件夹,这里不用考虑,后面九个字符,每 ...

随机推荐

  1. mac mysql 编码配置

    mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...

  2. redis安装&启动

    1.下载:redis.io,我下载的是5.0. 2.安装 1).tar -zxvf redis-5.0.0 2).进入src目录,执行make 3.回退到src的上一级目录,编辑redis.conf ...

  3. 引擎基本服务接口API介绍

    Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍 https://www.cnblogs.com/slickflow/p/4807227.html 工作流术语 ...

  4. fleet-运行一个全局的单元

    运行一个全局的单元 正如前面所提到的,全局单元是有用的,用于在您的集群中的所有机器上运行一个单元.它不会比一个普通的单元差太多,而是一个新的x-fleet参数称为Global=true.这是一个示例单 ...

  5. list 转换成datatable

    感谢网上的一位朋友 /// <summary> /// 将集合类转换成DataTable /// </summary> /// <param name="lis ...

  6. Java Lambda表达式教程与示例

    Lambda表达式是Java 8中引入的一个新特性.一个lambda表达式是一个匿名函数,而且这个函数没有名称且不属于任何类.lambda表达式的概念最初是在LISP编程语言中引入的. Java La ...

  7. 如何移除网站Response Headers中的X-Powered-By信息?

    X-Powered-By是网站响应头信息其中的一个,出于安全的考虑,一般会修改或删除掉这个信息. 如果你用的node.js express框架,那么X-Powered-By就会显示Express.如果 ...

  8. 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。

    Spring单例注入,单例对象可设置成Spring元件. 只有Spring的元件中@Autowired才有用,在普通类中@Autowired虽然不会编译报错,但运行时会报空指针错误.

  9. 使用Calendar来获取当前日期和时间

    1 package com.java.test; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Calendar; 5 6 pub ...

  10. Mac版 Slickedit 2013 v18.0.3.3 破解

    今天在Windows机器上面,无调试器的情况下,把 Mac系统下的Slickedit给破解了并测试通过. 原始安装包下载: Mac Slickedit 2013 (v18.0.3.3) 破解文件下载地 ...