300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 遍历生成目录树 生成目录树

遍历生成目录树 生成目录树

时间:2018-09-15 17:22:57

相关推荐

遍历生成目录树 生成目录树

php教程|php手册

treeview控件

php教程-php手册

遍历生成目录树,生成目录树A、序言

游戏同步器源码,ubuntu正常的分区,更改tomcat登录用户,爬虫高级篇,php如何去掉字段,seo写作 seo人lzw

在写上一篇博客的时候,需要用到目录树结构来展示我的文件结构,于是乎吃力不讨好的把所有文件夹和文件都手动的”遍历“了一边。后来我就想,这样太容易出错了,而且很费力气,于是就想着写个php脚本来遍历一个目录下面的文件及文件夹,并生成目录树,方便以后再有需要用到目录树结构的地方,直接运行就行了。目前脚本生成的目录树结构可以直接通过浏览器查看,也可以下载生成txt文件。

商城门户网站源码,ubuntu添加软件授权,枕头出现褐色爬虫,检验php,拉萨搜狗seolzw

B、思路介绍

娱乐网正版源码,ubuntu关闭自动休眠,Python爬虫新媒体,mssql php,凯哥seolzw

生成目录树的思路很简单,遍历当前文件夹下面的内容,碰到”.“和”..“直接跳过,碰到文件夹则递归调用,碰到文件则先保存到数组中,等当前文件夹遍历完之后吧数组中的文件拼接起来,这个操作就是生成目录树了,生成之后还有一步操作,显示或者下载目录树。书写的过程中还有一些细节问题,这个要等到开发的时候才会有。为了好理解,好扩展,我将本来一个函数可以完成的事放入一个类中,让遍历文件夹的思路更加清晰。

C、代码实现

思路有了,写起代码来就如鱼得水(这也是一般为什么厉害的人告诉我们他写代码的时候甚至有超过一般的时间在思考,而不是立马动手写代码),好了看看部分代码:

3.1 生成目录树

1/**

2* 生成目录树

3*/

4public function createTree($path, $level=0){

5 $level = $level;

6 $this->tree .= str_repeat($this->options[“padding”], $level)

7 .$this->options[“dirpre”]

8 .$this->_basename($path)

9 .$this->options[“newline”];

10 $level++;

11 $dirHandle = opendir($path);

12 $files= array();

13 while (false !== ($dir = readdir($dirHandle))) {

14 if($dir == “.” || $dir == “..”){

15 continue;

16 }

17 if(!$this->options[“showHide”] && substr($dir, 0, 1) == “.”){

18 continue;

19 }

20 $dir= $path.DIRECTORY_SEPARATOR.$dir;

21 if(is_dir($dir)){

22$this->createTree($dir, $level);

23 } elseif (is_file($dir)){

24 array_push($files, $dir);

25 }

26 }

27 closedir($dirHandle);

28 foreach ($files as $key => $value) {

29 $this->tree .= str_repeat($this->options[“padding”], $level)

30 .$this->options[“filepre”]

31 .$this->_basename($value)

32.$this->options[“newline”];

33 }

34 return $this;

35}

View Code

3.2 显示目录树

1/**

2* 显示目录树

3*/

4public function showTree(){

5 echo “

"6 .$this->tree7 ."

“;

8}

View Code

3.3 下载目录树

1/**

2* 下载目录树文件

3*/

4public function downloadTree($name){

5 header(“Content-type:text/plain”);

6 header(“Content-Disposition:attachment;filename={$name}.txt”);

7 echo $this->tree;

8}

View Code

3.4 试验下

用下面的两端代码分别测试下:

1 $t = new Dirtree(array(“padding”=>” “,”newline”=>”

“));

2 $t->createTree(“D:\autoload”)->showTree(“tree”);

View Code

上面这段代码会将目录结构信息输出到浏览器,就像图1那样:

1 $t = new Dirtree(array(“padding”=>” “,”newline”=>”\r\n”));

2 $t->createTree(“D:\autoload”)->downloadTree(“tree”);

View Code

上面的代码执行后,浏览器会下载一个tree.txt文件,打开文件的信息如图2所示

D、 总结

一个生成目录树功能基本完成了,但是这个要是有时间的话还可以在扩展扩展,让他更友好的支持命令行模式。或者对输出的内容做做强化,让文件夹可以折叠(js实现)。

本文版权归作者iforever(luluyrt@)所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。