常用函数
函数名
| 意义
|
basename
| 解析路径获取文件名
|
dirname
| 去掉路径的最后一层
|
pathinfo
| 将路径解析成数组
|
$handle=opendir($dirname)
| 打开一个路径,获得一个资源对象(句柄)
|
while($file=readdir($handle))
| 读取路径内的文件
|
closedir($handle)
| 关闭资源对象
|
rmdir
| 删除空目录
|
unlink
| 删除文件
|
mkdir(“1/2/3”, 0777, true)
| 递归创建目录
|
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"];
PHP遍历目录实例
function dir_info($path)
{
$result = [];
$handle = opendir($path);
while($file = readdir($handle)) {
$array = [];
if(substr($file, 0, 1) == ".")
{
continue;
}
$array["name"] = $file;
$array["type"] = filetype($path."/".$file);
$array["size"] = filesize($path."/".$file);
$result[] = $array;
}
closedir($handle);
return $result;
}
$path = "/Users/Aaron";
统计目录大小
//自定义一个函数dir_size(),统计传入参数的目录大小
function dir_size($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 += dir_size($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");
//递归建立目录
mkdir("/var/www/php", 0777, true);
//自定义函数递归的删除整个目录
function rm_dir($directory) {
//判断目录是否存在,如果不存在rmdir()函数会出错
if(file_exists($directory)) {
//打开目录返回目录资源,并判断是否成功
if($dir_handle=@opendir($directory)) {
//遍历目录,读出目录中的文件或文件夹
while($filename=readdir($dir_handle)) {
//一定要排除两个特殊的目录
if($filename!="." && $filename!="..") {
//将目录下的文件和当前目录相连
$sub_file=$directory."/".$filename;
//如果是目录条件则成立
if(is_dir($sub_file)) {
//递归调用自己删除子目录
rm_dir($sub_file);
}
//如果是文件条件则成立
if(is_file($sub_file)){
//直接删除这个文件
unlink($sub_file);
}
}
}
//关闭目录资源
closedir($dir_handle);
//删除空目录
rmdir($directory);
}
}
}
//调用del_dir()函数,将程序所在目录中的"test"文件夹删除
调用del_dir("test");
复制和移动目录
//自定义函数递归的复制带有多级子目录的目录
function copy_dir($dir_src, $dir_to) {
//如果目标不是一个目录,是一个已存在的文件则退出
if(is_file($dir_to)) {
echo "目标不是目录不能创建!!";
//退出函数
return;
}
//如果目标目录不存在则创建,存在则不变
if(!file_exists($dir_to)) {
//创建目录目录
mkdir($dir_to);
}
//打开目录返回目录资源,并判断是否成功
if($handle=@opendir($dir_src)) {
//遍历目录,读出目录中的文件或文件夹
while($filename=readdir($handle)) {
//一定要排除两个特殊的目录
if($filename!="." && $filename!="..") {
//将源目录的多级子目录连接
$sub_src_file=$dir_src."/".$filename;
//将目标目录的多级子目录连接
$subToFile=$dir_to."/".$filename;
//如果源文件是一个目录
if(is_dir($sub_src_file)){
//递归调用自己复制子目录
copy_dir($sub_src_file, $sub_to_file);
}
//如果源文件是一个普通文件
if(is_file($sub_src_file)){
//直接复制到目标位置
copy($sub_src_file, $sub_to_file);
}
}
}
closedir($handle); //关闭目录资源
}
}
//测试函数,将目录"test"复制到"D:/admin"
copy_dir("test", "D:/admin");