PHP 操作文件夹,主要有新建文件夹、删除文件夹、重命名文件夹、复制文件夹,打包成一个类,方便调用:
class dir{
//获取目录列表
public function listDir($dir){
static $fileList = array();
if(!is_dir($dir)){return null;}
$list = $this->scanDir($dir);
foreach($list as $item){
if($item != '.' && $item != '..'){
if(is_dir($item)){
$fileList['dirList'][] = $item;
}else{
$fileList['fileList'][] = $item;
}
}
}
return $fileList;
}
//创建目录
public function mkDir($dir){
if(is_dir($dir)){return true;}
return mkdir($dir, '0777', true);
}
public function scanDir($dir) {
if(function_exists('scandir')){return scandir($dir);}
$dh = opendir($dir);
$arr = array();
while($file = readdir($dh)) {
if($file == '.' || $file == '..') continue;
$arr[] = $file;
}
closedir($dh);
return $arr;
}
// 递归删除目录
public function rmDir($dir, $keepdir = false) {
// 避免意外删除整站数据
if(!is_dir($dir) || $dir == '/' || $dir == '../'){return false;}
$files = $this->scanDir($dir);
foreach($files as $file) {
if($file == '.' || $file == '..') continue;
$filepath = $dir.'/'.$file;
if(!is_dir($filepath)) {
try{unlink($filepath);}catch(\Exception $e){}
}else{
$this->rmDir($filepath);
}
}
if(!$keepdir){
try{rmdir($dir);}catch(\Exception $e){}
}
return true;
}
//重命名
public function reName($oldName, $newName){
@rename($oldName, $newName);
}
//复制
public function copyDir($src, $dst){
$dir = opendir($src);
$this->mkdir($dst);
while(false !== ($file = readdir($dir))){
if(( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
$this->copyDir($src . '/' . $file,$dst . '/' . $file); continue;
}else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
}
使用帮助:
扫描目录 scanDir($dir)
参数:目录【相对或绝对】
返回:数组形式的目录及文件名
获取目录列表 listDir($dir)
参数:目录【相对或绝对】
返回:数组形式的目录及文件名
创建文件夹 mkDir($dir)
参数:目录【相对或绝对】
删除文件夹 rmDir($dir, $keepdir = false)
参数:1、目录位置 2、是否保留目录【删除内部所有文件夹及文件】
重命名文件 reName($oldName, $newName)
参数:1、原始位置 2、重命名位置
复制文件夹 copyDir($src, $dst)
参数:1、原始位置 2、复制后的位置
使用:
$dir = new dir();
$dir->...