PHP文件系统-目录操作
一、对文件的操作
文件的操作: 创建文件touch(), 删除文件unlink(), 重命名rename, 大小filesize(), 移动复制等 读取 (都有PHP内置函数)
目录的操作: 创建目录(有),删除目录,复制目录, 统计目录大小, 遍历 (自己定义函数)
还有个文件管理系统fileSystem_demo在上面的文件夹中,是用面向对象的方法写的
二、遍历目录:
opendir()
readdir()
closedir()
rewinddir()
创建目录:mkdir(); //创建一个空目录
删除目录:rmdir(); //只可以删除空目录
移动或重命名函数:rename('c:/bbbccc', 'phpMyAdmin'); //和文件操作一样
复制目录:需要自己写函数实现
三、遍历目录实现方法
<?php
$dirname="phpMyAdmin";
// echo tosize(dirsize($dirname));
$dir=opendir($dirname);
// readdir($dir); //开始读的第一个目录是.
// readdir($dir); //第二个目录是..
while($fileName=readdir($dir)){
$file=$dirname.'/'.$fileName;
if($fileName!="." && $fileName!=".."){
if(is_dir($file)){
echo "<font color='red'>".$fileName."---".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."-------".toSize(dirsize($file))."-----------------</font><br>";
}else{
echo "<font color='green'>".$fileName."-----".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."------".toSize(filesize($file))."-------------------</font><br>";
}
}
}
closedir($dir);
//把单位为Byte的数转化为具体更大的单位
function toSize($size){
$dw="Bytes";
if($size > pow(2, 30)){
$size=round($size/pow(2, 30), 2);
$dw="GB";
}else if($size > pow(2, 20)){
$size=round($size/pow(2, 20), 2);
$dw="MB";
}else if($size > pow(2, 10)){
$size=round($size/pow(2, 10), 2);
$dw="KB";
}else{
$dw="bytes";
}
return $size.$dw;
}
//计算目录大小的函数
function dirsize($dirname) {
$dirsize=0;
$dir=opendir($dirname);
while($filename=readdir($dir)){
$file=$dirname."/".$filename;
if($filename!="." && $filename!=".."){
if(is_dir($file)){
$dirsize+=dirsize($file); //递归完成
}else{
$dirsize+=filesize($file);
}
}
}
closedir($dir);
return $dirsize;
}
?>
四、复制目录函数实现
<?php
$dirname="phpMyAdmin";
copydir($dirname, "hello1");
function copydir($dirsrc, $dirto){
if(is_file($dirto)){
echo "目标不是目录不能创建";
return;
}
if(!file_exists($dirto)){
mkdir($dirto);
// echo "创建目录".$dirto."成功!<br>";
}
$dir=opendir($dirsrc);
while($filename=readdir($dir)){
if($filename!="." && $filename!=".."){
$file1=$dirsrc."/".$filename;
$file2=$dirto."/".$filename;
if(is_dir($file1)){
copydir($file1, $file2); //递归处理
}else{
copy($file1, $file2);
}
}
}
closedir($dir);
}
?>
五、删除目录的函数实现
<?php
$dirname="phpMyAdmin";
deldir($dirname);
function deldir($dirname){
if(file_exists($dirname)) {
$dir=opendir($dirname);
while($filename=readdir($dir)){
if($filename!="." && $filename!=".."){
$file=$dirname."/".$filename;
if(is_dir($file)){
deldir($file); //使用递归删除子目录
}else{
echo '删除文件<b>'.$file.'</b>成功<br>';
unlink($file);
}
}
}
closedir($dir);
echo '删除目录<b>'.$dirname.'</b>成功<br>';
rmdir($dirname);
}
?>