博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP常用的基本文件和目录操作总结
阅读量:5902 次
发布时间:2019-06-19

本文共 6699 字,大约阅读时间需要 22 分钟。

来源:

一、基本文件的操作

文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等

1: 
2:     header("content-type","text/html;charset=utf-8");
3: /*
4: *声明一个函数,传入文件名获取文件属性
5: *@param string $fileName 文件名称
6: */
7: function getFilePro($fileName)
8: {
9:     if(!file_exists($fileName))
10:     {
11:         echo '文件不存在
';
12:         return;
13:     }
14:     /*是否是普通文件*/
15:     if(is_file($fileName))
16:     {
17:         echo $fileName.'是一个文件
';
18:     }
19:     /*是否是目录*/
20:     if(is_dir($fileName))
21:     {
22:         echo $fileName.'是一个目录';
23:     }
24:     /*输出文件的型态*/
25:     echo '文件型态是:'.getFileType($fileName).'
';
26:     /*文件大小,转换单位*/
27:     echo '文件大小是:'.getFileSize(filesize($fileName)).'
';
28:     /*文件是否可读*/
29:     if(is_readable($fileName))
30:     {
31:         echo '文件可读
';
32:     }
33:     /*文件是否可写*/
34:     if(is_writable($fileName))
35:     {
36:         echo '文件可写
';
37:     }
38:     /*文件是否可执行*/
39:     if(is_executable($fileName))
40:     {
41:         echo '文件可执行
';
42:     }
43:
44:     echo '文件创立时间:'.date('Y年m月j日',filectime($fileName)).'
';
45:     echo '文件最后修改时间:'.date('Y年m月j日',filemtime($fileName)).'
';
46:     echo '文件最后打开时间:'.date('Y年m月j日',fileatime($fileName)).'
';
47: }
48:
49: /*
50: *声明一个函数,返回文件类型
51: *@param string $fileName 文件名称
52: */
53: function getFileType($fileName)
54: {
55:     $type = '';
56:     switch(filetype($fileName))
57:     {
58:         case 'file':$type .= '普通文件';break;
59:         case 'dir':$type .= '目录文件';break;
60:         case 'block':$type .= '块设备文件';break;
61:         case 'char':$type .= '字符设备文件';break;
62:         case 'filo':$type .= '管道文件';break;
63:         case 'link':$type .= '符号链接';break;
64:         case 'unknown':$type .= '未知文件';break;
65:         default:
66:     }
67:     return $type;
68: }
69:
70: /*
71: *声明一个函数,返回文件大小
72: *@param int $bytes 文件字节数
73: */
74: function getFileSize($bytes)
75: {
76:     if($bytes >= pow(2,40))
77:     {
78:         $return = round($bytes / pow(1024,4),2);
79:         $suffix = 'TB';
80:     }
81:     else if($bytes >= pow(2,30))
82:     {
83:         $return = round($bytes / pow(1024,3),2);
84:         $suffix = 'GB';
85:     }
86:     else if($bytes >= pow(2,20))
87:     {
88:         $return = round($bytes / pow(1024,2),2);
89:         $suffix = 'MB';
90:     }
91:     else if($bytes >= pow(2,10))
92:     {
93:         $return = round($bytes / pow(1024,1),2);
94:         $suffix = 'KB';
95:     }
96:     else
97:     {
98:         $return = $bytes;
99:         $suffix = 'B';
100:     }
101:     return $return." ".$suffix;
102: }
103:
104: /*调用函数,传入test目录下的test.txt文件*/
105: getFilePro('./test/div.html');
106: ?>
结果:

二、目录的操作

目录的操作有:遍历目录、删除、复制、大小统计等

1、遍历目录

1: /*
2: *遍历目录
3: *@param string $dirName 目录名
4: */
5: function findDir($dirName)
6: {
7:     $num  = 0;  /*统计子文件个数*/
8:     $dir_handle = opendir($dirName);  /*打开目录*/
9:     /*输出目录文件*/
10:     echo '
';
11:     echo '

目录'.$dirName.'下的文件

';
12:     echo '
13:     echo '文件名文件大小文件类型修改时间';
14:
15:     while($file = readdir($dir_handle))
16:     {
17:         $dirFile = $dirName.'/'.$file;
18:         $bgcolor = $num++%2==0?'#ffffff':'#cccccc';
19:         echo '';
20:         echo ''.$file.'';
21:         echo ''.filesize($dirFile).'';
22:         echo ''.filetype($dirFile).'';
23:         echo ''.date('Y/n/t',filemtime($dirFile)).'';
24:         echo '';
25:     }
26:     echo "";
27:     closedir($dir_handle);  /*关闭目录*/
28:     echo "在".$dirName."目录下共有".$num.'个子文件';
29: }
30: /*传递当前目录下的test目录*/
31: findDir('./test');

结果

2、统计目录大小

1: /*
2: *统计目录大小
3: *@param string $dirName 目录名
4: *@return double
5: */
6:
7: function dirSize($dirName)
8: {
9:     $dir_size = 0;
10:     if($dir_handle = @opendir($dirName))
11:     {
12:         while ($fileName = readdir($dir_handle))
13:         {
14:              /*排除两个特殊目录*/
15:             if($fileName != '.' && $fileName != '..')
16:             {
17:                 $subFile = $dirName.'/'.$fileName;
18:                 if(is_file($subFile))
19:                 {
20:                     $dir_size += filesize($subFile);
21:                 }
22:                 if(is_dir($subFile))
23:                 {
24:                     $dir_size += dirSize($subFile);
25:                 }
26:             }
27:         }
28:         closedir($dir_handle);
29:         return $dir_size;
30:     }
31: }
32: /*传递当前目录下的test目录*/
33: $dir_size = dirSize('./test');
34: echo './test目录文件大小是:'.round($dir_size / pow(1024,1),2).'KB';

结果

3、删除目录

1: /*
2: *删除目录
3: *@param string $dirName 目录名
4: */
5: function delDir($dirName)
6: {
7:     /*php中的mkdir函数就可以创建目录*/
8:     if(file_exists($dirName))
9:     {
10:         if($dir_handle = @opendir($dirName))
11:         {
12:             while ($fileName = readdir($dir_handle))
13:             {
14:                  /*排除两个特殊目录*/
15:                 if($fileName != '.' && $fileName != '..')
16:                 {
17:                     $subFile = $dirName.'/'.$fileName;
18:                     if(is_file($subFile))
19:                     {
20:                         unlink($subFile);
21:                     }
22:                     if(is_dir($subFile))
23:                     {
24:                         delDir($subFile);
25:                     }
26:                 }
27:             }
28:             closedir($dir_handle);
29:             rmdir($dirName);
30:             return $dirName.'目录已经删除';
31:         }
32:     }
33: }
34: /*传递test目录的副本test1*/
35: echo delDir('./test1');

删除成功的提示信息

4、复制目录

1: /*
2: *复制目录
3: *@param string $dirSrc 原目录名
4: *@param string $dirTo 目标目录名
5: */
6: function copyDir($dirSrc,$dirTo)
7: {
8:     if(is_file($dirTo))
9:     {
10:         echo '目标目录不能创建';/*目标不是一个*/
11:         return;
12:     }
13:     if(!file_exists($dirTo))
14:     {
15:         /*目录不存在则创建*/
16:         mkdir($dirTo);
17:     }
18:     if($dir_handle = @opendir($dirSrc))
19:     {
20:         while ($fileName = readdir($dir_handle))
21:         {
22:              /*排除两个特殊目录*/
23:             if($fileName != '.' && $fileName != '..')
24:             {
25:                 $subSrcFile = $dirSrc.'/'.$fileName;
26:                 $subToFile = $dirTo.'/'.$fileName;
27:                 if(is_file($subSrcFile))
28:                 {
29:                     copy($subSrcFile,$subToFile);
30:                 }
31:                 if(is_dir($subSrcFile))
32:                 {
33:                     copyDir($subSrcFile,$subToFile);
34:                 }
35:             }
36:         }
37:         closedir($dir_handle);
38:         return $dirSrc.'目录已经复制到'.$dirTo.'目录';
39:     }
40: }
41: echo copyDir('./test','../testcopy');

转载于:https://www.cnblogs.com/ido321/p/3998062.html

你可能感兴趣的文章
Win8系统的笔记本如何发射Wifi
查看>>
掌握需求过程阅读笔记06
查看>>
VM14安装Mas os 13
查看>>
PAT (Advanced Level) 1101. Quick Sort (25)
查看>>
CDOJ 1273 God Qing's circuital law
查看>>
c#学习之windows phone 以及windows app的开发
查看>>
Team Project Proposal:App:等车时间预测(重写) -- by DengPan
查看>>
[BZOJ] 2660 [Beijing wc2012]最多的方案
查看>>
ASP.NET Core学习零散记录
查看>>
动态HTML处理和机器图像识别-----动态HTML介绍
查看>>
Starling 2D框架简介(一)
查看>>
记一次app内嵌h5
查看>>
一个前后端分离方案[转载]
查看>>
java编程感悟01
查看>>
springboot中Properties注解的实现
查看>>
黑马程序员--异常练习
查看>>
Python语法
查看>>
mongodb的基本使用
查看>>
NOIP2014 day2 t2 寻找道路
查看>>
Quartz总结(二):定时任务中使用业务类(XXService)
查看>>