PHP文件系統操作常用函數
阿新 • • 發佈:2017-07-19
調用 name del 菜鳥 global lena 格式化 類型 lose
雖然PHP提供很多內置的文件處理函數,但是分得特別細,有一些操作需要多個函數一起使用才能達到目標,比如刪除非空文件夾的所有內容,遍歷文件夾等功能,下面各個函數是學習的時候整理的,有的是教程裏的,有的是自己想的,可以直接調用,免得自己再次寫一遍,,本人是PHP菜鳥,一定存在很多bug,如果你願意,非常歡迎留言,我收到留言後再修改。
1 /** 2 * [以文字形式返回文件的類型] 3 * @param [type] $filename [description] 4 * @return [type] [description]5 */ 6 function getfiletype($filename){ 7 $type=filetype($filename); 8 switch($type){ 9 case "dir": 10 echo "this is a dir<br>"; 11 break; 12 case "file": 13 echo "this is a file<br>"; 14 break; 15 case "unknown": 16 echo "can‘t know the file<br>"; 17 break; 18 } 19 }
1 /** 2 * [返回格式化後的文件大小] 3 * @param [type] $size [description] 4 * @return [type] [description] 5 */ 6 function transfer_filesize($size){ 7 if($size>=pow(2,40)){ 8 return ceil($size/pow(2,40))."TB"; 9 } else if($size>=pow(2,30)){ 10 return ceil($size/pow(2,30))."GB"; 11 } else if($size>=pow(2,20)){ 12 return ceil($size/pow(2,20))."MB"; 13 } else if($size>=pow(2,10)){ 14 return ceil($size/pow(2,10))."KB"; 15 } else { 16 return $size."B"; 17 } 18 }
1 /** 2 * [獲取文件夾或者文件的屬性,包含文件類型及大小] 3 * @param [type] $filename [description] 4 * @return [type] [description] 5 */ 6 function getfilepro($filename){ 7 if(file_exists($filename)){ 8 echo "the file is exists<br>"; 9 getfiletype($filename); 10 echo "the file size is ".transfer_filesize(filesize($filename))."<br>"; 11 } else { 12 echo "the file is not exists<br>"; 13 } 14 }
1 /** 2 * [遍歷整個文件夾] 3 * @param [string] $file [需要遍歷的文件夾名或文件名] 4 * @return [type] [description] 5 */ 6 function show_all_files($file){ 7 $dir=opendir($file); 8 while($filename=readdir($dir)){ 9 if($filename!=‘.‘ && $filename!=‘..‘){ 10 $filename=$file."/".$filename; 11 if(is_dir($filename)){ 12 echo "目錄".$filename."<br>"; 13 show_all_files($filename); 14 } else{ 15 echo "文件".$filename."<br>"; 16 } 17 } 18 } 19 closedir($dir); 20 } 21 show_all_files("./class");
1 /** 2 * [獲取一個磁盤或者分區的總容量和剩余容量] 3 * @param [string] $disk [description] 4 * @return [array] [可取消註釋,返回一個包含兩個值的數組] 5 */ 6 function get_disk_space($disk){ 7 $total_space=transfer_filesize(disk_total_space($disk)); 8 $free_space=transfer_filesize(disk_free_space($disk)); 9 echo $disk."盤總容量為:".$total_space."<br>"; 10 echo $disk."盤可用容量為:".$free_space."<br>"; 11 return array($total_space,$free_space); 12 } 13 get_disk_space("C:");
1 /** 2 * [目錄總數,文件總數,及目錄總大小] 3 * @param [string] $filename [目錄名] 4 * @return [array] [返回該目錄的目錄總數,文件總數,及目錄總大小] 5 */ 6 function get_all_nums($filename){ 7 $total_size=0; 8 $total_dir_nums=0; 9 $total_file_nums=0; 10 function get_nums($filename){ 11 global $total_dir_nums,$total_file_nums,$total_size; 12 $dir=opendir($filename); 13 while($file=readdir($dir)){ 14 if($file!="." && $file!=".."){ 15 $file=$filename."/".$file; 16 if(is_dir($file)){ 17 get_nums($file); 18 $total_dir_nums++; 19 } else { 20 $total_file_nums++; 21 $total_size+=filesize($file); 22 } 23 } 24 } 25 closedir($dir); 26 return array($total_dir_nums,$total_file_nums,$total_size); 27 } 28 list($dir,$file,$size)=get_nums($filename); 29 echo "文件數為:".$file."<br>"; 30 echo "目錄數為:".$dir."<br>"; 31 echo "總大小為:".transfer_filesize($size)."<br>"; 32 } 33 get_all_nums("./class");
1 /** 2 * [刪除一個非空的目錄或文件] 3 * @param [string] $filename [要刪除的目錄或文件名] 4 * @return [null] [null] 5 */ 6 function delete_dir($filename){ 7 if(!file_exists($filename)){ 8 die("不存在該目錄"); 9 } 10 if(is_file($filename)){ 11 unlink($filename); 12 echo "成功刪除文件".$file."<br>"; 13 } 14 $dir=opendir($filename); 15 while($file=readdir($dir)){ 16 if($file!="." && $file!=".."){ 17 $file=$filename."/".$file; 18 if(is_dir($file)){ 19 delete_dir($file); 20 } else { 21 unlink($file); 22 echo "成功刪除文件".$file."<br>"; 23 } 24 } 25 } 26 closedir($dir); 27 rmdir($filename); 28 echo "成功刪除目錄".$filename."<br>"; 29 } 30 delete_dir("./aaaa");
1 /** 2 * [用來拷貝一個目錄] 3 * @param [string] $dir_src [源目錄] 4 * @param [string] $dir_dest [目標目錄] 5 * @return [null] [description] 6 */ 7 function copy_dir($dir_src,$dir_dest){ 8 if(!file_exists($dir_src)){ 9 die("源文件不存在<br>"); 10 } 11 if(!file_exists($dir_dest)){ 12 mkdir($dir_dest); 13 } 14 $dir=opendir($dir_src); 15 while($file=readdir($dir)){ 16 if($file!="." && $file!=".."){ 17 $src_file=$dir_src."/".$file; 18 $dest_file=$dir_dest."/".$file; 19 if(is_dir($src_file)){ 20 copy_dir($src_file,$dest_file); 21 } else { 22 copy($src_file,$dest_file); 23 } 24 } 25 } 26 closedir($dir); 27 } 28 copy_dir("../aaaa","./bbbb");
1 /** 2 * [逐個字符讀出文件所有內容] 3 * @param [string] $filename [要讀的文件名] 4 * @return [null] [description] 5 */ 6 function get_contents_one($filename){ 7 $fp=fopen($filename,"r"); 8 while(!feof($fp)){ 9 echo fgetc($fp); 10 } 11 echo "<br>"; 12 fclose($fp); 13 } 14 get_contents_one("bbb.txt");
1 /** 2 * [逐行讀出文件所有內容] 3 * @param [string] $filename [要讀的文件名] 4 * @return [null] [description] 5 */ 6 function get_contents_two($filename){ 7 $fp=fopen($filename,"r"); 8 while(!feof($fp)){ 9 echo fgets($fp); 10 } 11 echo "<br>"; 12 fclose($fp); 13 } 14 get_contents_two("bbb.txt");
PHP文件系統操作常用函數