PHP文件系统操作常用函数

虽然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");
时间: 2024-07-30 10:07:18

PHP文件系统操作常用函数的相关文章

c语言文件操作常用函数及读写文件代码举列

文件操作常用函数 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 fgetc() 从流中读一个字符 fseek() 在流中定位到指定的字符 fputs() 写字符串到流 fgets() 从流中读一行或指定个字符 fprintf() 按格式输出到流 fscanf() 从流中按格式读取 feof() 到达文件尾时返回真值 ferror() 发生错误时返回其值 rewind() 复位文件定位器到文件开始处 remove() 删除文件 fread() 从流中读指定个数

go语音之进阶篇字符串操作常用函数介绍

下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 示例: fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood&qu

dplyr 数据操作 常用函数(4)

接下来我们继续了解一些dplyr中的常用函数. 1.ranking 以下各个函数可以实现对数据进行不同的排序 row_number(x) ntile(x, n) min_rank(x) dense_rank(x) percent_rank(x) cume_dist(x) 具体的看些例子. x <- c(5, 1, 3, 2, 2, NA) x row_number(x) row_number是对数据大小进行编号排序,遇到重复值,排序继续加1,缺失值不计入 min_rank(x) min_rank

dplyr 数据操作 常用函数(5)

继续来了解dplyr中的其他有用函数 1.sample() 目的是可以从一个数据框中,随机抽取一些行,然后组成新的数据框. sample_n(tbl, size, replace = FALSE, weight = NULL, .env = parent.frame()) sample_frac(tbl, size = 1, replace = FALSE, weight = NULL, .env = parent.frame()) 从参数来看,sample输入数据是tbl格式,size表示抽取

PHP文件操作常用函数总结

一 .解析路径: 1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. eg: $path = "/home/httpd/html/index.php"; $file = basename($path,".php"); // $file is set to "index" 2 得到目录部分: dirname(); 给出一个包含有指

PHP的文件操作常用函数

PHP文件操作 1 获得文件名:basename - 返回路径中的文件名部分 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. string basename ( string $path [, string $suffix ] ) $path = "/home/cate/index/index2.php";$file = basename($path);echo $file.'<br>'; /

dplyr 数据操作 常用函数(1)

上面介绍完dplyr中,几个主要的操作函数后,我们再进一步了解dplyr中那些函数可能我们会经常要用到. 这里主要根据dplyr包作者的书籍目录来把它列出来. 1.add_rownames 添加行名称,把数据转换成列. add_rownames(df, var = "rowname") 下面来看个具体的例子 head(mtcars) add_rownames(mtcars,var="bl") 已经把原来的行数据转成列数据了. 2.between()函数可以用于选取数

lua操作常用函数

(1)lua 和 C++之间的交互的基本知识: lua 和 C++ 之间的数据交互通过堆栈进行,栈中的数据通过索引值进行定位,(栈就像是一个容器一样,放进去的东西都要有标号)其中栈顶是-1,栈底是1,也就是第 1 个入栈的在栈底:也可以这么说:正数表示相对于栈底的位置(位移),负数表示相对于栈顶的位置(位移):(2)计算和清空栈中元素的操作:1.函数lua_gettop()用于返回栈中元素的个数,同时也是栈顶元素的索引,因为栈底是1,所以栈中有多少个元素,栈顶索引就是多少:呵呵2.函数lua_s

lua操作常用函数学习一

(1)lua 和 C++之间的交互的基本知识: lua 和 C++ 之间的数据交互通过堆栈进行,栈中的数据通过索引值进行定位,(栈就像是一个容器一样,放进去的东西都要有标号)其中栈顶是-1,栈底是1,也就是第 1 个入栈的在栈底:也可以这么说:正数表示相对于栈底的位置(位移),负数表示相对于栈顶的位置(位移):(2)计算和清空栈中元素的操作:1.函数lua_gettop()用于返回栈中元素的个数,同时也是栈顶元素的索引,因为栈底是1,所以栈中有多少个元素,栈顶索引就是多少:呵呵2.函数lua_s