isDir()) { $sontDir = $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(); if (!is_dir($sontDir)) { self::mkdirs($sontDir, 0755, true); } } else { copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); } } return true; } /** * 写入 * @param $content * @param $filepath * @param $type $type 1 为生成控制器 2 模型 * @throws \Exception */ public static function filePutContents($content,$filepath,$type){ if($type==1){ $str = file_get_contents($filepath); $parten = '/\s\/\*+start\*+\/(.*)\/\*+end\*+\//iUs'; preg_match_all($parten,$str,$all); $ext_content = ''; if($all[0]){ foreach($all[0] as $key=>$val){ $ext_content .= $val."\n\n"; } } $content .= $ext_content."\n\n"; $content .="}\n\n"; } ob_start(); echo $content; $_cache=ob_get_contents(); ob_end_clean(); if($_cache){ $File = new \think\template\driver\File(); $File->write($filepath, $_cache); } } /** * 获取文件夹大小 * @param $dir 根文件夹路径 * @return bool|int */ public static function getDirSize($dir) { if(!is_dir($dir)){ return false; } $handle = opendir($dir); $sizeResult = 0; while (false !== ($FolderOrFile = readdir($handle))) { if ($FolderOrFile != "." && $FolderOrFile != "..") { if (is_dir("$dir/$FolderOrFile")) { $sizeResult += self::getDirSize("$dir/$FolderOrFile"); } else { $sizeResult += filesize("$dir/$FolderOrFile"); } } } closedir($handle); return $sizeResult; } /** * 创建文件 * @param $file * @param $content * @return bool */ public static function createFile($file,$content) { $myfile = fopen($file, "w") or die("Unable to open file!"); fwrite($myfile, $content); fclose($myfile); return true; } /** * 基于数组创建目录 * @param $files */ public static function createDirOrFiles($files) { foreach ($files as $key => $value) { if (substr($value, -1) == '/') { mkdir($value); } else { file_put_contents($value, ''); } } } /** * 判断文件或目录是否有写的权限 * @param $file * @return bool */ public static function isWritable($file) { if (DIRECTORY_SEPARATOR == '/' AND @ ini_get("safe_mode") == FALSE) { return is_writable($file); } if (!is_file($file) OR ($fp = @fopen($file, "r+")) === FALSE) { return FALSE; } fclose($fp); return TRUE; } /** * 写入日志 * @param $path * @param $content * @return bool|int */ public static function writeLog($path, $content) { self::mkdirs(dirname($path)); return file_put_contents($path, "\r\n" . $content, FILE_APPEND); } }