您的位置:首页 > 编程语言 > PHP开发

PHP文件系统-目录操作

2012-04-11 13:25 381 查看
一、对文件的操作

文件的操作: 创建文件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);
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: