PHP目录函数实现创建、读取目录教程实例


Posted in PHP onJanuary 13, 2011

今天主要介绍在PHP网站开发中文件目录函数的应用。在PHP网站开发中,我们时常需要读取目录文件信息或者创建目录以存放必要的文件,而当目录文件大小超出规定大小时我们又需要删除目录文件,如手工删除目录即费时又费力,我们完全可以通过PHP自带的目录操作函数实现对目录文件的管理。

本文以实例教程形式讲解如何使用PHP文件目录函数,实例的主要功能:一、利用PHP目录函数创建多个目录,二、在目录下创建文本文件并在文件中写入相关信息,三、递归实现读取(遍历)目录(文件夹)信息并以列表形式列出目录下的所有子目录及文件。

本实例涉及到文件读写操作,推荐先查看PHP文件读写教程。

本实例目录结构:PHP执行文件与leapsoulcn目录处在同一级,创建的子目录处在leapsoulcn目录下。
第一步:使用PHP目录函数创建相关目录

<? 
mkdir("leapsoulcn",0777); 
mkdir("leapsoulcn/leapsoul",0777); 
mkdir("leapsoulcn/php",0777); 
mkdir("leapsoulcn/php/web",0777); 
mkdir("leapsoulcn/php/web/test",0777); 
?>

说明:在这段代码中,先使用PHP目录函数mkdir创建主目录leapsoulcn,并创建了两个子目录,leapsoul及php,在php目录下创建了web以及test目录。
知识点:mkdir主要用来创建目录,有两个参数:新目录名(注意创建多级目录时,必须包含目录路径),新目录的访问权限,即umask值,第一个数字通常是0,第二个数字指定了所有者特许,第三个数字指定了所有者用户群的特许 ,第四个数字制定了全局特许,可用值如下:
1 = 可执行
2 = 可写
4 = 可读
将三个数字加起来,7代表拥有所有权限,你可以根据自己的需要对创建的新目录赋予不同的权限。
第二步:在leapsoulcn/php/目录下创建leapsoulcn.txt文件,并写入相关的内容
<? 
@$fp = fopen("leapsoulcn/php/leapsoulcn.txt","w"); 
if(!$fp){ 
echo "system error"; 
exit(); 
}else { 
$fileData = "domain"."\t"."3water.com"."\n"; 
$fileData = $fileData."description"."\t"."PHP网站开发教程网,面向PHP初学者的PHP教程网。"."\n"; 
$fileData = $fileData."title"."\t"."本实例主要讲述PHP目录函数的具体应用:涵盖读取目录、创建目录、删除目录等功能"; 
fwrite($fp,$fileData); 
fclose($fp); 
} 
?>

说明:这段实例代码具体解释可参考之前介绍的PHP文件写入教程。
第三步:读取(遍历)目录名及文本文件名
<? 
$dir = opendir("leapsoulcn"); 
while ($fileDir = readdir($dir)) { 
if (!strcmp($fileDir,".")||!strcmp($fileDir,"..")) { 
continue; 
} 
echo $fileDir."目录列表:<br/><br/>"; 
$subDir = "leapsoulcn/".$fileDir; 
$dirC = "->"; 
listSubDir($subDir,$dirC); 
} 
closedir($dir); 
?>

说明:在这段代码实例教程中主要使用了PHP目录函数opendir(),readdir(),closedir()。
知识点:
1、opendir函数用来打开所游览的具体目录,函数参数为目录名,注意,由于在本实例教程中PHP执行文件和游览的主目录处在同一级,所以传递的参数仅仅只是目录名,如果不在同一级或读取多级目录时,需带上具体的目录路径或文件路径。
2、在通过opendir函数读取了主目录后,通过while循环来进一步读取主目录下的多级目录及文件,此处使用的PHP目录函数为readdir,此函数从目录中读取目录或文件名,当没有可读取的目录或文件时,返回False,注意,读取的目录包含.和..,在本实例教程中由于是一级级往下读取目录,所以当读取的目录信息为.和..时跳出本次循环,继续读取下一级目录。
3、在读取完主目录的所有子目录及文件后,通过PHP目录函数closedir来关闭目录句柄,类似于fclose函数关闭文件。
第四步:创建读取(遍历)目录及文件的递归函数
<? 
function listSubDir($dirInfo,$dirC) 
{ 
if (is_dir($dirInfo)) { 
$subDir = dir($dirInfo); 
while ($subFile = $subDir->read()) { 
if (!strcmp($subFile,".")||!strcmp($subFile,"..")) { 
continue; 
} 
$newDir = $dirInfo."/".$subFile; 
if (is_file($newDir)) { 
echo $dirC.$subFile.":文件属性<br/>"; 
} 
else{ 
echo $dirC.$subFile.":目录属性<br/>"; 
listSubDir($newDir,"-".$dirC); 
} 
} 
$subDir->close(); 
return; 
} 
else return; 
} 
?>

说明:此函数有两个参数:需要读取的目录(包含目录路径),显示用的多级目录分隔符。在这个函数中主要使用了PHP文件目录函数is_dir,is_file,dir类。
知识点:
1、首先通过is_dir来判断要读取的是目录还是文件,此函数的参数和opendir函数类似,注意目录路径问题。
2、如果判断需要读取的是目录,则通过dir目录类来进一步读取其多级子目录,层层递归。dir类所具有的操作函数功能和opendir、readdir、closedir这些PHP目录函数功能一致。

至此整个创建目录,读取目录的代码实例就算完成了,可列出主目录下的多级子目录名及文本文件名。
如何删除目录?

删除目录可以使用PHP目录函数rmdir,函数的参数和mkdir函数参数类似,可以使用相对目录路径或绝对目录路径,只是要删除的目录必须为空目录,通过上述代码实例你完全可以判断哪些是空目录。

通过应用这些基本的PHP目录函数及文件操作函数,完全可以实现和文件系统打交道,自行编写一个具有创建、删除目录、读取目录、管理文件的网站目录文件管理系统,那文件信息、文件大小如何读取?删除或移动文件如何实现?呵呵,我们下次分享吧。

PHP 相关文章推荐
一个显示天气预报的程序
Oct 09 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 #PHP
PHP JSON格式数据交互实例代码详解
Jan 13 #PHP
PHP学习笔记之二 php入门知识
Jan 12 #PHP
php算开始时间到过期时间的相隔的天数
Jan 12 #PHP
php数据库密码的找回的步骤
Jan 12 #PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 #PHP
php 变量未定义等错误的解决方法
Jan 12 #PHP
You might like
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
Python学习笔记_数据排序方法
2014/05/22 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
使用python接入微信聊天机器人
2020/03/31 Python
python set集合使用方法解析
2019/11/05 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
舞蹈教师自荐信
2014/01/27 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
给老师的一封感谢信
2015/01/20 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫