php设置文件路径的常量方法_PHP文件目录(路径)的操作

一、解析目录路径

1.PHP程序、配置文件、Apache配置文件中涉及路径均使用/,也可以使用目录分隔符常量DIRECTORY_SEPARATOR进行连接(麻烦)

2.多路径分隔符Windows;Linux:,也可以使用路径分隔符常量PATH_SEPARATOR进行连接

3.程序换行符常量PHP_EOL

4.相对路径:./当前目录../上级目录

5.不同的根路径

echo 'a.jpg';//服务器根目录

mkdir('/hello');//操作系统盘根目录

6.路径解析函数

a.basename()取文件名

b.dirname()取目录名

c.pathinfo()将路径信息返回成数组

d.realpath()返回规范化的绝对路径名

二、遍历目录

1.glob:匹配目录中指定文件放入返回数组中

2.Directory函数:

•chdir — 改变目录

•chroot — 改变根目录

•closedir — 关闭目录句柄

•dir — 返回一个 Directory 类实例

•getcwd — 取得当前工作目录

•opendir — 打开目录句柄

•readdir — 从目录句柄中读取条目

•rewinddir — 倒回目录句柄

•scandir — 列出指定路径中的文件和目录

**注:遍历目录时,前两个文件名.和..要过滤掉**

$open=opendir('test');

/*echo readdir($open);*/

while($filename=readdir($open)){

//过滤掉.和..

if($filename!=='.'&&$filename!=='..'){

//注意:此处$filename仅代表目录名或文件名,要访问还要加上路径

$filename='./test/'.$filename;

if(is_dir($filename)){

echo '目录:'.$filename.'
';

}else{

echo '文件:'.$filename.'
';

}

}

}

//使用倒回句柄,倒回至目录开始,才能再次遍历

rewinddir($open);

echo'------------------------------------------
';

while($filename=readdir($open)){

//过滤掉.和..

if($filename!=='.'&&$filename!=='..'){

//注意:此处$filename仅代表目录名或文件名,要访问还要加上路径

$filename='./test/'.$filename;

if(is_dir($filename)){

echo '目录:'.$filename.'
';

}else{

echo '文件:'.$filename.'
';

}

}

}

closedir($open);

三、统计目录中个数和大小

1.使用递归统计目录下所有文件的个数,如下:

$dirNum=0;

$fileNum=0;

function getdirnum($filename){

if(is_dir($filename)){

$dir=opendir($filename);

global $dirNum;

global $fileNum;

while($filename=readdir($dir)){

if($filename!=='.'&&$filename!=='..'){

$filename=$file.'/'.$filename;

if(is_dir($filename)){

$dirNum++;

getdirnum($filename);//递归

}else{

$fileNum++;

}

}

}

echo '目录个数为'.$dirNum.'
';

echo '文件个数为'.$fileNum.'
';

closedir($dir);

}else{

echo "这个文件名不是目录
";

}

}

getdirnum('test');

2.使用递归统计目录大小,即目录下所有文件大小的和

$size=0;

function dirsize($file){

global $size;

if(is_dir($file)){

$dir=opendir($file);

while($filename=readdir($dir)){

if($filename!=='.'&&$filename!=='..'){

$filename=$file.'/'.$filename;

if(is_dir($filename)){

$size+=dirsize($filename);

}else{

$size+=filesize($filename);

}

}

}

closedir($dir);

}else{

$size=filesize($filename);

}

return $size/pow(2,10).'MB';

}

echo dirsize('test');

3.统计磁盘/磁盘可用空间大小

$total=disk_total_space('c:');

$valuable=disk_free_space('c:');

echo $total/pow(2,30).'';

echo $valuable/pow(2,30).'';

三、建立和删除目录

1.mkdir('test',0644):创建目录

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

注:$mode为权限,用户、组、其他用户各自有r=4/w=2/x=1的权限,如0644为rw_/r__/r__(Linux权限的知识)

2.rmdir('test'):删除目录,注意目录要为空

3.unlink('test.php'):删除文件

4.利用递归删除非空目录,如下:

**注:切记排除目录下的.和..,否则会删除整个磁盘内容,且不进回收站!**

function deleteDir($dirname){

$dir=opendir($dirname);

while($filename=readdir($dir)){

if($filename!=='.'&&$filename!=='..'){

$filename=$dirname.'/'.$filename;

if(is_dir($filename)){

deleteDir($filename);

}else{

unlink($filename);

}

}

}

closedir($dir);

rmdir($dirname);

}

deleteDir('test');

5.复制和移动目录

1.rename():重命名一个文件或目录,加上路径后即为移动文件,因此移动和重命名是一个函数

bool rename ( string $oldname , string $newname [, resource $context ] )

2.copy():只能拷贝文件,无法拷贝目录

bool copy ( string $source , string $dest [, resource $context ] )

3.拷贝非空目录函数:

function copyDir($dirname,$dircopy){

mkdir($dircopy);

$dir=opendir($dirname);

while($filename=readdir($dir)){

if($filename!=='.'&&$filename!=='..'){

$srcfile=$dirname.'/'.$filename;//原目录名或文件名

$tofile=$dircopy.'/'.$filename;//新目录名或文件名

if(is_dir($srcfile)){

copyDir($srcfile,$tofile);

}else{

copy($srcfile,$tofile);

}

}

}

closedir($dir);

}

copyDir('test','test222');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值