遍历生成目录树
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了遍历生成目录树,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3684字,纯文字阅读大概需要6分钟。
内容图文
![遍历生成目录树](/upload/InfoBanner/zyjiaocheng/153/3a4cdd0e52c34d35a6e35d863eaccfa9.jpg)
在写上一篇博客的时候,需要用到目录树结构来展示我的文件结构,于是乎吃力不讨好的把所有文件夹和文件都手动的”遍历“了一边。后来我就想,这样太容易出错了,而且很费力气,于是就想着写个php脚本来遍历一个目录下面的文件及文件夹,并生成目录树,方便以后再有需要用到目录树结构的地方,直接运行就行了。目前脚本生成的目录树结构可以直接通过浏览器查看,也可以下载生成txt文件。
二、思路介绍
生成目录树的思路很简单,遍历当前文件夹下面的内容,碰到”.“和”..“直接跳过,碰到文件夹则递归调用,碰到文件则先保存到数组中,等当前文件夹遍历完之后吧数组中的文件拼接起来,这个操作就是生成目录树了,生成之后还有一步操作,显示或者下载目录树。书写的过程中还有一些细节问题,这个要等到开发的时候才会有。为了好理解,好扩展,我将本来一个函数可以完成的事放入一个类中,让遍历文件夹的思路更加清晰。
三、代码实现
思路有了,写起代码来就如鱼得水(这也是一般为什么厉害的人告诉我们他写代码的时候甚至有超过一般的时间在思考,而不是立马动手写代码),好了看看部分代码:
3.1 生成目录树
1 /** 2 * 生成目录树 3 */ 4 public 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 */ 4 public function showTree(){ 5 echo "View Code" 6 .$this->tree 7 .""; 8 }
3.3 下载目录树
1 /** 2 * 下载目录树文件 3 */ 4 public 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"=>"View Code
")); 2 $t->createTree("D:\autoload")->showTree("tree");
上面这段代码会将目录结构信息输出到浏览器,就像图1那样:
图 1 输出目录结构到浏览器 图 2 下载目录树结构
1 $t = new Dirtree(array("padding"=>" ","newline"=>"\r\n")); 2 $t->createTree("D:\autoload")->downloadTree("tree");View Code
上面的代码执行后,浏览器会下载一个tree.txt文件,打开文件的信息如图2所示
四、 总结
一个生成目录树功能基本完成了,但是这个要是有时间的话还可以在扩展扩展,让他更友好的支持命令行模式。或者对输出的内容做做强化,让文件夹可以折叠(js实现)。
本文版权归作者iforever(luluyrt@163.com)所有,未经作者本人同意禁止任何形式的转载,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
以上就介绍了遍历生成目录树,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的遍历生成目录树全部内容,希望文章能够帮你解决遍历生成目录树所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。