PHP文件管理(2)

PHP文件管理(2)


1. 目录的基本操作

1.1 解析目录的路径

相对路径:$path=“file/txt”
绝对路径:$path=“C:/Appserv/www/index.php”

函数

1.basename($path, “php”) : 返回路径的中文件名部分

2.dirname($path) : 返回全路径的目录名

3.s=pathinfo($path) :返回数组s[dirname],s[basename];s[extension]

1.2 遍历目录

函数

1.opendir($dirname):打开目录,返回目录句柄
2.readdir() : 接受opendir()返回目录句柄为参数,返回当前文件指针所指的文件名。
3.closedir() : 以opendir()返回的目录句柄为参数,关闭目录
4.rewinddir() :将目录指针重置目录开始处

例子:

<?php
	header("Content-Type:text/html;charset=utf-8");
	$num=0;
	$dirname="phpMyAdmin";
	$dir_handle=opendir($dirname);
	echo '<table boder="0" align="center" widtn="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>';

	while($file=readdir($dir_handle)){
		$dirFile=$dirname."/".$file;
		$bgcolor=$num++%2==0?'#ffffff':'#cccccc';
		echo '<tr bgcolor='.$bgcolor.'>';
		echo '<td>'.$file.'</td>';
		echo '<td>'.filesize($dirFile).'</td>';
		echo '<td>'.filetype($dirFile).'</td>';
		echo '<td>'.date("Y/m/d",filemtime($dirFile)).'</td>';
	}
	echo '</table>';
	closedir($dir_handle);

	echo '在<b>'.$dirname.'</b>目录下子目录和文件共有<b>'.$num.'</b>个';
?>

glob(): 检索指定的目录;

1.3 统计目录大小

  1. disk_free_space(): 统计磁盘剩余大小
  2. disk_total_spcae(): 统计磁盘大小

统计目录大小(自定义函数)

<?php
	function dirSize($directory){
		$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("phpMyAdmin");
	echo round($dir_size/pow(1024,1),2)."KB";
?>

可以用exec(),system()调用“du”来计算目录大小,但有安全问题;

1.4 建立和删除目录

<?php
	function delDir($directory){
		if(file_exits($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("phpMyAdmin");
?>

1.5 复制目录

<?php
	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);
		}
	}
	copyDir("phpMyAdmin","D:/admin");
?>
发布了19 篇原创文章 · 获赞 15 · 访问量 4214

猜你喜欢

转载自blog.csdn.net/weixin_43952190/article/details/100936892