PHP文件系统操作常用函数
2021-06-18 18:07
标签:文件处理 返回 else nsf add 格式化 格式 global 文件大小 虽然PHP提供很多内置的文件处理函数,但是分得特别细,有一些操作需要多个函数一起使用才能达到目标,比如删除非空文件夹的所有内容,遍历文件夹等功能,下面各个函数是学习的时候整理的,有的是教程里的,有的是自己想的,可以直接调用,免得自己再次写一遍,,本人是PHP菜鸟,一定存在很多bug,如果你愿意,非常欢迎留言,我收到留言后再修改。 PHP文件系统操作常用函数 标签:文件处理 返回 else nsf add 格式化 格式 global 文件大小 原文地址:http://www.cnblogs.com/-beyond/p/7204543.html 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
";
11 break;
12 case "file":
13 echo "this is a file
";
14 break;
15 case "unknown":
16 echo "can‘t know the file
";
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
";
9 getfiletype($filename);
10 echo "the file size is ".transfer_filesize(filesize($filename))."
";
11 } else {
12 echo "the file is not exists
";
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."
";
13 show_all_files($filename);
14 } else{
15 echo "文件".$filename."
";
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."
";
10 echo $disk."盘可用容量为:".$free_space."
";
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."
";
30 echo "目录数为:".$dir."
";
31 echo "总大小为:".transfer_filesize($size)."
";
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."
";
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."
";
23 }
24 }
25 }
26 closedir($dir);
27 rmdir($filename);
28 echo "成功删除目录".$filename."
";
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("源文件不存在
");
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 "
";
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 "
";
12 fclose($fp);
13 }
14 get_contents_two("bbb.txt");