<? /* * * 操纵文件类 * * 例子: * 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.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 * 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文件夹 */ class FileUtil { /* * * 建立文件夹 * * @param string $aimUrl * @return viod */ function createDir( $aimUrl ) { $aimUrl = str_replace ( ' / ' , ' / ' , $aimUrl ); $aimDir = '' ; $arr = explode ( ' / ' , $aimUrl ); foreach ( $arr as $str ) { $aimDir .= $str . ' / ' ; if ( ! file_exists ( $aimDir )) { mkdir ( $aimDir ); } } } /* * * 建立文件 * * @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 ) { FileUtil :: unlinkFile( $aimUrl ); } $aimDir = dirname ( $aimUrl ); FileUtil :: 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 )) { FileUtil :: createDir( $aimDir ); } @ $dirHandle = opendir ( $oldDir ); if ( ! $dirHandle ) { return false ; } while ( false !== ( $file = readdir ( $dirHandle ))) { if ( $file == ' . ' || $file == ' .. ' ) { continue ; } if ( ! is_dir ( $oldDir . $file )) { FileUtil :: moveFile( $oldDir . $file , $aimDir . $file , $overWrite ); } else { FileUtil :: 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 ) { FileUtil :: unlinkFile( $aimUrl ); } $aimDir = dirname ( $aimUrl ); FileUtil :: 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 . ' / ' ; if ( ! is_dir ( $aimDir )) { return false ; } $dirHandle = opendir ( $aimDir ); while ( false !== ( $file = readdir ( $dirHandle ))) { if ( $file == ' . ' || $file == ' .. ' ) { continue ; } if ( ! is_dir ( $aimDir . $file )) { FileUtil :: unlinkFile( $aimDir . $file ); } else { FileUtil :: unlinkDir( $aimDir . $file ); } } closedir ( $dirHandle ); return rmdir ( $aimDir ); } /* * * 删除文件 * * @param string $aimUrl * @return boolean */ function unlinkFile( $aimUrl ) { if ( file_exists ( $aimUrl )) { unlink ( $aimUrl ); return true ; } else { return false ; } } /* * * 复制文件夹 * * @param string $oldDir * @param string $aimDir * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function copyDir( $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 )) { FileUtil :: createDir( $aimDir ); } $dirHandle = opendir ( $oldDir ); while ( false !== ( $file = readdir ( $dirHandle ))) { if ( $file == ' . ' || $file == ' .. ' ) { continue ; } if ( ! is_dir ( $oldDir . $file )) { FileUtil :: copyFile( $oldDir . $file , $aimDir . $file , $overWrite ); } else { FileUtil :: copyDir( $oldDir . $file , $aimDir . $file , $overWrite ); } } return closedir ( $dirHandle ); } /* * * 复制文件 * * @param string $fileUrl * @param string $aimUrl * @param boolean $overWrite 该参数控制是否覆盖原文件 * @return boolean */ function copyFile( $fileUrl , $aimUrl , $overWrite = false ) { if ( ! file_exists ( $fileUrl )) { return false ; } if ( file_exists ( $aimUrl ) && $overWrite == false ) { return false ; } elseif ( file_exists ( $aimUrl ) && $overWrite == true ) { FileUtil :: unlinkFile( $aimUrl ); } $aimDir = dirname ( $aimUrl ); FileUtil :: createDir( $aimDir ); copy ( $fileUrl , $aimUrl ); return true ; }} ?>