日期:2014-05-17 浏览次数:20612 次
<?php /** * 文件目录操作类 * * 例子: * $fileutil = new fileDirUtil(); * $fileutil->createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 * $fileutil->createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件 * $fileutil->createFile('b/1/2/3.txt'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 * $fileutil->writeFile('b/1/2/3.txt','this is something i write!'); 在文件中写内容 * $arr = $fileutil->readFile2array('example/mysql.txt'); * $arr = $fileutil->readsFile('example/mysql.txt'); * $size=$fileutil->bitSize($fileutil->getDirSize("example")); 得到文件或目录的大小 * $fileutil->copyDir('b','d/e'); 测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去 * $fileutil->copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去 * $fileutil->moveDir('a/','b/c'); 测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹 * $fileutil->moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件 建立一个b/d文件夹,并把b/1/2中的3.exe移动进去 * $fileutil->unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件 * $fileutil->unlinkDir('d'); 测试删除文件夹 删除d文件夹 * $list = $fileutil->dirList("E:\example"); 测试列表文件夹 列出目录下所有文件 * $list = $fileutil->dirTree("/"); 测试列表文件夹树 列出目录下所有文件直接直接的树关系 */ class fileDirUtil { /** * 建立文件夹 * * @param string $aimUrl * @return viod */ function createDir($aimUrl, $mode = 0777) { $aimUrl = str_replace ( '', '/', $aimUrl ); $aimDir = ''; $arr = explode ( '/', $aimUrl ); foreach ( $arr as $str ) { $aimDir .= $str . '/'; if (! file_exists ( $aimDir )) { mkdir ( $aimDir, $mode ); } } } /** * 建立文件 * * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function createFile($aimUrl, $overWrite = false) { if (file_exists ( $aimUrl ) && $overWrite == false) { return false; } elseif (file_exists ( $aimUrl ) && $overWrite == true) { $this->unlinkFile ( $aimUrl ); } $aimDir = dirname ( $aimUrl ); $this->createDir ( $aimDir ); touch ( $aimUrl ); return true; } /** * 移动文件夹 * * @param string $oldDir * @param string $aimDir * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function moveDir($oldDir, $aimDir, $overWrite = false) { $aimDir = str_replace ( '', '/', $aimDir ); $aimDir = substr ( $aimDir, - 1 ) == '/' ? $aimDir : $aimDir . '/'; $oldDir = str_replace ( '', '/', $oldDir ); $oldDir = substr ( $oldDir, - 1 ) == '/' ? $oldDir : $oldDir . '/'; if (! is_dir ( $oldDir )) { return false; } if (! file_exists ( $aimDir )) { $this->createDir ( $aimDir ); } @$dirHandle = opendir ( $oldDir ); if (! $dirHandle) { return false; } while ( false !== ($file = readdir ( $dirHandle )) ) { if ($file == '.' || $file == '..') { continue; } if (! is_dir ( $oldDir . $file )) { $this->moveFile ( $oldDir . $file, $aimDir . $file, $overWrite ); } else { $this->moveDir ( $oldDir . $file, $aimDir . $file, $overWrite ); } } closedir ( $dirHandle ); return rmdir ( $oldDir ); } /** * 移动文件 * * @param string $fileUrl * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function moveFile($fileUrl, $aimUrl, $overWrite = false) { if (! file_exists ( $fileUrl )) { return false; } if (file_exists ( $aimUrl ) && $overWrite = false) { return false; } elseif (file_exists ( $aimUrl ) && $overWrite = true) { $this->unlinkFile ( $aimUrl ); } $aimDir = dirname ( $aimUrl ); $this->createDir ( $aimDir ); rename ( $fileUrl, $aimUrl ); return true; } /** * 删除文件夹 * * @param string $aimDir * @return boolean */ function unlinkDir($aimDir) { $aimDir = str_replace ( '', '/', $aimDir ); $aimDir = substr ( $aimDir, - 1 ) == '/' ? $aimDir : $aimDir . '/';