在线课堂
通过在线课堂,您可以随时随地,学习最新的PHP开发知识。
通过在线课堂,您可以随时随地,学习最新的PHP开发知识。
Author: 刘老师(Aaron Lau) 武汉长乐教育,武汉PHP培训课程,版权所有,转载请注明!
basename()
获取文件名dirname()
去掉文件名的目录名pathinfo()
获取文件名/基本名/扩展名的关联数组- PHP遍历目录实例
basename()
获取文件名//包含有指向一个文件的全路径的字符串
$path = "/var/www/html/page.php";
//显示带有文件扩展名的文件名,输出page.php
echo basename($path);
//显示不带有文件扩展名的文件名,输出page
echo basename($path,".php");
dirname()
去掉文件名的目录名//包含有指向一个文件的全路径的字符串
$path = "/var/www/html/page.php";
//返回目录名/var/www/html
echo dirname($path);
//返回目录名c:/
echo dirname('c:/');
pathinfo()
获取文件名/基本名/扩展名的关联数组//包含有指向一个文件的全路径的字符串
$path = "/var/www/html/page.php";
//返回包括指定路径中的目录名、基本名和扩展名关联数组
$path_parts=pathinfo($path);
//输出目录名/var/www/html
echo $path_parts["dirname"];
//输出基本名page.php
echo $path_parts["basename"];
//输出扩展名.php
echo $path_parts["extension"];
//用来统计子目录和文件的个数
$num=0;
//定义一个变量,保存当前目录下用来遍历的一个目录名
$dirname='./';
//用opendir打开目录
$dir_handle=opendir($dirname);
//将遍历的目录和文件名使用表格格式输出
echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';
//输出表格标题
echo '<caption><h2>目录'.$dirname.'下面的内容</h2></caption>';
//输出表格的字段名
echo '<tr align="left" bgcolor="#cccccc">';
echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>';
//使用readdir循环读取目录里的内容
while($file=readdir($dir_handle)) {
//将目录下的文件和当前目录连接起来,才能在程序中使用
$dirFile=$dirname."/".$file;
//隔行一种颜色,同时也将计数器num累加
if($num++%2==0) {
//单行为白色背景
$bgcolor='#ffffff';
} else {
//双行为灰色背景
$bgcolor='#cccccc';
}
//输出行开始标记,并使用背景色
echo '<tr bgcolor='.$bgcolor.'>';
//显示文件名
echo '<td>'.$file.'</td>';
//显示文件大小
echo '<td>'.filesize($dirFile).'</td>';
//显示文件类型
echo '<td>'.filetype($dirFile).'</td>';
//格式化显示文件修改时间
echo '<td>'.date("Y/n/t",filemtime($dirFile)).'</td>';
echo '</tr>';
}
//关闭表格标记
echo '</table>';
//关闭文件操作句柄
closedir($dir_handle);
echo '在<b>'.$dirname.'</b>目录下的子目录和文件共有<b>'.$num.'</b>个';
//自定义一个函数dirSize(),统计传入参数的目录大小
function dirSize($directory) {
//整型变量初值为0,用来累加各个文件大小从而计算目录大小
$dir_size=0;
//打开目录,并判断是否能成功打开
if($dir_handle=@opendir($directory)) {
//循环遍历目录下的所有文件
while($filename=readdir($dir_handle)) {
//一定要排除两个特殊的目录
if($filename!="." && $filename!="..") {
//将目录下的子文件和当前目录相连
$subFile=$directory."/".$filename;
//如果为目录
if(is_dir($subFile))
//递归地调用自身函数,求子目录的大小
$dir_size+=dirSize($subFile);
//如果是文件
if(is_file($subFile))
//求出文件的大小并累加
$dir_size+=filesize($subFile);
}
}
//关闭文件资源
closedir($dir_handle);
//返回计算后的目录大小
return $dir_size;
}
}
//调用该函数计算目录大小,返回目录大小的字节数
$dir_size=dirSize("./");
//将获取的目录字节数转换为“KB”单位并输出
echo round($dir_size/pow(1024,1),2)."KB";
mkdir("php");
//自定义函数递归的删除整个目录
function delDir($directory) {
//判断目录是否存在,如果不存在rmdir()函数会出错
if(file_exists($directory)) {
//打开目录返回目录资源,并判断是否成功
if($dir_handle=@opendir($directory)) {
//遍历目录,读出目录中的文件或文件夹
while($filename=readdir($dir_handle)) {
//一定要排除两个特殊的目录
if($filename!="." && $filename!="..") {
//将目录下的文件和当前目录相连
$subFile=$directory."/".$filename;
//如果是目录条件则成立
if(is_dir($subFile)) {
//递归调用自己删除子目录
delDir($subFile);
}
//如果是文件条件则成立
if(is_file($subFile)){
//直接删除这个文件
unlink($subFile);
}
}
}
//关闭目录资源
closedir($dir_handle);
//删除空目录
rmdir($directory);
}
}
}
//调用delDir()函数,将程序所在目录中的“test”文件夹删除
delDir("test");
//自定义函数递归的复制带有多级子目录的目录
function copyDir($dirSrc, $dirTo) {
//如果目标不是一个目录,是一个已存在的文件则退出
if(is_file($dirTo)) {
echo "目标不是目录不能创建!!";
//退出函数
return;
}
//如果目标目录不存在则创建,存在则不变
if(!file_exists($dirTo)) {
//创建目录目录
mkdir($dirTo);
}
//打开目录返回目录资源,并判断是否成功
if($dir_handle=@opendir($dirSrc)) {
//遍历目录,读出目录中的文件或文件夹
while($filename=readdir($dir_handle)) {
//一定要排除两个特殊的目录
if($filename!="." && $filename!="..") {
//将源目录的多级子目录连接
$subSrcFile=$dirSrc."/".$filename;
//将目标目录的多级子目录连接
$subToFile=$dirTo."/".$filename;
//如果源文件是一个目录
if(is_dir($subSrcFile)){
//递归调用自己复制子目录
copyDir($subSrcFile, $subToFile);
}
//如果源文件是一个普通文件
if(is_file($subSrcFile)){
//直接复制到目标位置
copy($subSrcFile, $subToFile);
}
}
}
closedir($dir_handle); //关闭目录资源
}
}
//测试函数,将目录"test"复制到"D:/admin"
copyDir("test", "D:/admin");