abstract:<?php //封裝文件操作方法庫(kù) /**文件創(chuàng)建操作 *@param $filename //需要?jiǎng)?chuàng)建的文件名 *@return string //提示信息 **/ function create_file($filename) { //判斷目錄或文件是否存在,不存在則創(chuàng)建 if(file
<?php //封裝文件操作方法庫(kù) /**文件創(chuàng)建操作 *@param $filename //需要?jiǎng)?chuàng)建的文件名 *@return string //提示信息 **/ function create_file($filename) { //判斷目錄或文件是否存在,不存在則創(chuàng)建 if(file_exists($filename)){ return '文件已存在!'; } // 獲取文件名稱(chēng),判斷不存在創(chuàng)建 if (!file_exists(dirname($filename))){ mkdir(dirname($filename),0777,true); } if(touch($filename)){ return '文件創(chuàng)建成功!'; } return '文件創(chuàng)建失??!'; } //var_dump(create_file('text1.txt')); //var_dump(create_file('file/text1.txt')); //刪除方法 /** *@param $filename //刪除的文件名稱(chēng) *@return string 提示信息 */ function del_file($filename){ //查詢(xún)文件是否存在file_exists,判斷文件是否可寫(xiě)is_writable, if(!file_exists($filename)&&!is_writable($filename)){ return '此文件不可刪除!'; } //unlink直接刪除文件并反饋 if (unlink($filename)){ return '文件刪除成功!'; } return '文件刪除失?。?#39;; } //echo del_file('text1.txt'); //echo del_file('file/text1.txt'); //文件夾無(wú)法刪除 //echo del_file('file'); //復(fù)制文件操作 /** *@param $filename //需要復(fù)制的文件名 *@param $dest //目標(biāo)目錄或者文件名 *@return string //提示信息 */ function copy_file($filename,$dest){ //查詢(xún)文件是否存在并查詢(xún)是否可寫(xiě) if(!file_exists($filename)&&!is_writable($filename)){ return '此文件不可復(fù)制!'; } //查詢(xún)判斷目錄是否存在 if(!is_dir($dest)){ mkdir($dest,0777,true); } //拼接 $destname = $dest.'/'.basename($filename); //查詢(xún)是否存在重名文件 if(file_exists($destname)){ return '該目錄此文件已存在!'; } //復(fù)制并反饋 if(copy($filename,$destname)){ return '文件復(fù)制成功!'; } return '文件復(fù)制失??!'; } //echo copy_file('text1.txt','file'); //文件重命名操作 /** *@param $oldname //需要重命名的文件名 *@param $newname //目標(biāo)文件名 *@ruturn string //提示信息 */ function rename_file($oldname,$newname){ //判斷文件是否存在并是否可寫(xiě) if(!file_exists($oldname)&&!is_writable($oldname)){ return '此文件不可重命名!'; } //獲取文件當(dāng)前路徑 dirname()用pathinfo 函數(shù) 加上參數(shù) PATHINFO_DIRNAME 進(jìn)行替換 $path = dirname($oldname); $destname = $path.'/'.$newname; if(file_exists($destname)){ return '此文件已存在!'; } //重命名操作并驗(yàn)證 if (rename($oldname,$newname)){ return '文件重命名成功!'; } return '文件重命名失敗!'; } //echo rename_file('text10.txt','text10.txt'); //文件剪切 /** *param $filename //需要剪切的文件 *param $dest //目標(biāo)目錄 *return //提示信息 */ function cut_file($filename,$dest){ //判斷文件 if(!is_file($filename)){ return '該文件不可剪切'; } //is_dir判斷目錄是否存在 if(!is_dir($dest)){ mkdir($dest,0777,true); } //拼接文件路徑 $destName = $dest.'/'.basename($filename); //檢查是否存在同名文件 if(is_file($destName)){ return '該文件已存在'; } //執(zhí)行剪切 rename()重命名和剪切操作 if(rename($filename,$destName)){ return '剪切成功'; }else { return '剪切失敗'; } } //echo cut_file('text1.txt','file'); //文件信息查詢(xún)操作 /** *@param $filename //需要查詢(xún)的文件名稱(chēng) *@return array|string //文件信息 */ function get_file_info($filename){ //判斷文件是否正常并判斷是否可讀 if(!is_file($filename) && !is_readable($filename)){ return '該文件不可讀取數(shù)據(jù)'; } return[ //文件類(lèi)型查詢(xún) 'type' => filetype($filename), //文件創(chuàng)建時(shí)間查詢(xún) 'ctime' => date("Y-m-d H:i:s",filectime($filename)), //文件最后的修改時(shí)間查詢(xún) 'mtime' => date('Y-m-d H:i:s',filemtime($filename)), //文件最后的訪問(wèn)時(shí)間查詢(xún) 'atime' => date('Y-m-d H:i:s',fileatime($filename)), //文件字節(jié)大小查詢(xún) trans_byte()字節(jié)轉(zhuǎn)換成大小 'size' => trans_byte(filesize($filename)) ]; } var_dump(get_file_info('text1.txt')); echo '<hr>'; //字節(jié)轉(zhuǎn)換文件大小 /** *@param $byte //字節(jié)大小 *@param int $precision //保留小數(shù)位 *@return string //反饋信息 */ function trans_byte($byte,$precision=2){ $KB = 1024; $MB = 1024*$KB; $GB = 1024*$MB; $TB = 1024*$GB; if($byte<$KB){ return $byte.'B'; }elseif($byte<$MB){ //round()四舍五入 return round($byte/$KB,$precision).'KB'; }elseif($byte<$GB){ return round($byte/$MB,$precision).'MB'; }elseif($byte<$TB){ return round($byte/$GB,$precision).'GB'; }else{ return round($byte/$TB,$precision).'TB'; } } /** *文件讀取操作 *@param $filename //需要讀取的文件名 *@return bool|string //文件內(nèi)容|提示信息 */ function read_file($filename){ //檢查文件是否可讀并檢查文件是否正常 if(is_file($filename) && is_readable($filename)){ return file_get_contents($filename); } return '該文件不可讀!'; } //echo read_file('text1.txt'); /** *文件以數(shù)組的形式讀取返回,每一行 *@param $filename //需要查詢(xún)內(nèi)容的文件名 *@param bool $skip_empty_lines //是否跳過(guò)空行 *@return array|bool|string */ function read_file_array($filename,$skip_empty_lines =false) { //檢查文件是否正常并檢查是否可讀 if(is_file($filename) && is_readable($filename)){ //判斷是否跳過(guò)空行 if($skip_empty_lines == true){ //查詢(xún)文件內(nèi)容 return file($filename,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); }else{ return file($filename); } } return '該文件無(wú)法讀取'; } //var_dump(read_file_array('text1.txt')); echo '<hr>'; /**文件寫(xiě)入的操作 *@param $filename //目標(biāo)文件 *@param $data //寫(xiě)入數(shù)據(jù) *@param bool $clear //是否清空內(nèi)容 *return string 提示信息 */ function write_file($filename,$data,$clear =false) { //獲取文件目錄 $dirname = dirname($filename); //判斷目錄是否存在 if(!file_exists($dirname)){ mkdir($dirname,0777,true); } //判斷數(shù)據(jù)類(lèi)型 if(is_array($data)||is_object($data)){ $data = serialize($data); } //判斷是否清空原文件內(nèi)容 if($clear == false){ //判斷文件是否正常并可讀 if(is_file($filename) && is_readable($filename)){ //判斷是否有內(nèi)容 if(filesize($filename)>0){ //獲取源文件內(nèi)容 $srcData =file_get_contents($filename); //拼接內(nèi)容 $data = $srcData.$data; } } } //寫(xiě)入內(nèi)容并判斷 if(file_put_contents($filename,$data)){ return '文件寫(xiě)入成功'; } return '文件寫(xiě)入失敗'; } $data = [ 'name'=>'小龍女', 'age'=>20 ]; //echo write_file('text1.txt','php學(xué)習(xí)重在練習(xí)'); //echo write_file('text1.txt',$data); //下載文件操作 /** *@param $filename //需要下載的文件名 */ function dow_file($filename) { //告訴瀏覽器返回文件的大小 header('Accept-Length:'.filesize($filename)); //告訴瀏覽器文件作為附件處理,下載完的文件名 header('Content-Disposition:attachment;filename='.basename($filename)); //輸出文件 redafile($filename); } // dow_file('www.zip'); //dow_file('tupian.jpg') //單文件的上傳操作 /** *@param $fileInfo //上傳的文件信息 *@param string $uploadPath//上傳的指定目錄 *@param array $allowExt//上傳文件的類(lèi)型 *@param int $maxSize//上傳的最大值 *@return string //提示信息 */ function upload_file($fileInfo,$uploadPath='./upload',$alllowExt=['jpg','png','txt','html','csv'],$maxSize=1000000) { //判斷文件錯(cuò)誤號(hào) if($fileInfo['error'] === 0){ //pathinfo()獲取文件后綴,strtolower()轉(zhuǎn)換成小寫(xiě) $ext = strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION)); //判斷文件類(lèi)型 if(!in_array($ext, $alllowExt)){ return '非法文件類(lèi)型!'; } //判斷文件大小 if($fileInfo['size']>$maxSize){ return '超出文件上傳的最大值'; } //判斷文件上傳方式POST if(!is_uploaded_file($fileInfo['tmp_name'])){ return '非法上傳操作'; } //判斷移動(dòng)的目錄是否存在,如果沒(méi)有創(chuàng)建 if(!is_dir($uploadPath)){ mkdir($uploadPath,0777,true); } //uniqid()生成唯一的文件ID,重命名文件名不重復(fù) $uniName = md5(uniqid(microtime(true),true)).'.'.$ext; //拼接路徑及文件名 $dest = $uploadPath.'/'.$uniName; //將文件移動(dòng)到指定目錄 if(!move_uploaded_file($fileInfo['tmp_name'], $dest)){ return '文件上傳失敗'; } return '文件上傳成功'; }else{ switch($fileInfo['error']){ case 1: $res = '上傳的文件超過(guò)了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值。'; break; case 2: $res = '上傳文件的大小超過(guò)了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。'; break; case 3: $res = '文件只有部分被上傳'; break; case 4: $res = '沒(méi)有文件被上傳'; break; case 6: $res = '找不到臨時(shí)文件夾。PHP 4.3.10 和 PHP 5.0.3 引進(jìn)。'; break; case 7: $res = '文件寫(xiě)入失敗。PHP 5.1.0 引進(jìn)。'; break; } return $res; } }
Correcting teacher:滅絕師太Correction time:2019-02-16 18:12:32
Teacher's summary:寫(xiě)的很不錯(cuò), 封裝這個(gè)方法庫(kù)是為了后面的web文件管理系統(tǒng)做準(zhǔn)備 同時(shí)還可以當(dāng)做鍛煉了一些函數(shù) 繼續(xù)加油吧!