日期:2014-05-17 浏览次数:20719 次
<?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 . '/';