一、基本文件的操作
文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等
1:
2:header("content-type","text/html;charset=utf-8");
3:/*
4:*声明一个函数,传入文件名获取文件属性
5:*@param string $fileName 文件名称
6:*/
7:functiongetFilePro($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:functiongetFileType($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:functiongetFileSize($bytes)
75:{
76:if($bytes >= pow(2,40))
77:{
78:$return= round($bytes / pow(1024,4),2);
79:$suffix ='TB';
80:}
81:elseif($bytes >= pow(2,30))
82:{
83:$return= round($bytes / pow(1024,3),2);
84:$suffix ='GB';
85:}
86:elseif($bytes >= pow(2,20))
87:{
88:$return= round($bytes / pow(1024,2),2);
89:$suffix ='MB';
90:}
91:elseif($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:functionfindDir($dirName)
6:{
7:$num = 0;/*统计子文件个数*/
8:$dir_handle = opendir($dirName);/*打开目录*/
9:/*输出目录文件*/
10:echo'
11:echo'
'下的文件'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'
21:echo'
22:echo'
23:echo'
24:echo'
25:}
26:echo"
文件名 | 文件大小 | 文件类型 | 修改时间 |
---|---|---|---|
'.$file.' | ';'.filesize($dirFile).' | ';'.filetype($dirFile).' | ';'.date('Y/n/t',filemtime($dirFile)).' | ';
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:functiondirSize($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:functiondelDir($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:echodelDir('./test1');
删除成功的提示信息
4、复制目录
1:/*
2:*复制目录
3:*@param string $dirSrc 原目录名
4:*@param string $dirTo 目标目录名
5:*/
6:functioncopyDir($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:echocopyDir('./test','../testcopy');