遍历文件夹-php
//统计某个目录的大小
<?php
header('content-type:text/html;charset=utf-8');
//统计某个目录的大小
/**
@function 统计目录大小
@param $dirname 路径
@return int
*/
function getDirSize($dirname)
{
$dirsize = 0;
//打开目录
$dir = opendir($dirname);
//循环的读取该目录的所有文件及其子目录
while (false !== ($filename = readdir($dir))) {
// $file 表示该文件或者目录全路径
$file = $dirname . '/' . $filename;
//如果 是 . 或者 .. 不做处理
if ($filename != "." && $filename != "..") {
//判断是不是一个目录
//如果是目录,就递归统计
if (is_dir($file)) {
$dirsize += getDirSize($file);
} else {
//如果是文件就直接计算大小
$dirsize += filesize($file);
}
}
}
closedir($dir);
return $dirsize;
}
//测试一下
$dir_path = 'd:/www';
echo getDirSize($dir_path);
遍历删除目录
<?php
header('content-type:text/html;charset=utf-8');
//递归的删除目录及其子目录
/**
@function 删除一个目录及其子目录
@param $src 删除哪个目录
*/
function rrmdir($src) {
//打开一个目录
$dir = opendir($src);
//遍历整个目录
while(false !== ( $file = readdir($dir)) ) {
//如果是 . 或者 .. 不做出来
if (( $file != '.' ) && ( $file != '..' )) {
//得到这个文件的全路径
$full = $src . '/' . $file;
//如果是目录,就递归删除
if ( is_dir($full) ) {
rrmdir($full);
}
//如果不是目录,就直接删除
else {
unlink($full);
}
}
}
closedir($dir);
//当发现这个目录是空目录时,就删除目录本身.
rmdir($src);
}
//测试..
$dir_path = 'd:/www';
rrmdir($dir_path);
echo '删除 目录 成功!';
遍历拷贝目录
<?php
header('content-type:text/html;charset=utf-8');
//拷贝目录:
//定义一个常量,是目录的分割符号
define('DS', DIRECTORY_SEPARATOR);
/**
@function 拷贝一个目录的所有文件和子目录到 另外目录
@param $path 源目录 (被拷贝)
@param $dest 目标目录 (拷贝到哪里去)
*/
//需求
// d:/test 目录 拷贝 到 f:/test 目录
function copy_r( $path, $dest )
{
//先判断 源目录 是否存在?
//如果是目录,就准备递归拷贝
if( is_dir($path) )
{
//尝试创建 目标目录
@mkdir( $dest );
//这里 scandir 就是将该目录的所有文件和目录放到一个数组中.
$objects = scandir($path);
//如果该目录的内容[文件和子目录]>0
if( sizeof($objects) > 0 )
{
//经典的对数组的遍历.
foreach( $objects as $file )
{
//如果是 . 或者 .. 不处理 [php基础]
if( $file == "." || $file == ".." )
continue;
// go on
//如果是目录,就递归拷贝
if( is_dir( $path.DS.$file ) )
{
copy_r( $path.DS.$file, $dest.DS.$file );
}
else
{ //如果是文件就直接拷贝
copy( $path.DS.$file, $dest.DS.$file );
}
}
}
return true;
}
elseif( is_file($path) )
{
//如果是文件,就直接拷贝
return copy($path, $dest);
}
else
{
//如果不是文件和目录,就不拷贝
return false;
}
}
//做一个测试工作
$src_path = 'd:/test';
$dest_path = 'f:/test';
copy_r($src_path, $dest_path);
echo 'ok';
文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。
若有帮助到您,欢迎捐赠支持,您的支持是对我坚持最好的肯定(_)