一、基本文件的操作
文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
<?php header( "content-type" , "text/html;charset=utf-8" ); /* *声明一个函数,传入文件名获取文件属性 *@param string $fileName 文件名称 */ function getFilePro( $fileName ) { if (! file_exists ( $fileName )) { echo '文件不存在<br/>' ; return ; } /*是否是普通文件*/ if ( is_file ( $fileName )) { echo $fileName . '是一个文件<br/>' ; } /*是否是目录*/ if ( is_dir ( $fileName )) { echo $fileName . '是一个目录' ; } /*输出文件的型态*/ echo '文件型态是:' .getFileType( $fileName ). '<br/>' ; /*文件大小,转换单位*/ echo '文件大小是:' .getFileSize( filesize ( $fileName )). '<br/>' ; /*文件是否可读*/ if ( is_readable ( $fileName )) { echo '文件可读<br/>' ; } /*文件是否可写*/ if ( is_writable ( $fileName )) { echo '文件可写<br/>' ; } /*文件是否可执行*/ if ( is_executable ( $fileName )) { echo '文件可执行<br/>' ; } echo '文件创立时间:' . date ( 'Y年m月j日' , filectime ( $fileName )). '<br/>' ; echo '文件最后修改时间:' . date ( 'Y年m月j日' , filemtime ( $fileName )). '<br/>' ; echo '文件最后打开时间:' . date ( 'Y年m月j日' , fileatime ( $fileName )). '<br/>' ; } /* *声明一个函数,返回文件类型 *@param string $fileName 文件名称 */ function getFileType( $fileName ) { $type = '' ; switch ( filetype ( $fileName )) { case 'file' : $type .= '普通文件' ; break ; case 'dir' : $type .= '目录文件' ; break ; case 'block' : $type .= '块设备文件' ; break ; case 'char' : $type .= '字符设备文件' ; break ; case 'filo' : $type .= '管道文件' ; break ; case 'link' : $type .= '符号链接' ; break ; case 'unknown' : $type .= '未知文件' ; break ; default : } return $type ; } /* *声明一个函数,返回文件大小 *@param int $bytes 文件字节数 */ function getFileSize( $bytes ) { if ( $bytes >= pow(2,40)) { $return = round ( $bytes / pow(1024,4),2); $suffix = 'TB' ; } else if ( $bytes >= pow(2,30)) { $return = round ( $bytes / pow(1024,3),2); $suffix = 'GB' ; } else if ( $bytes >= pow(2,20)) { $return = round ( $bytes / pow(1024,2),2); $suffix = 'MB' ; } else if ( $bytes >= pow(2,10)) { $return = round ( $bytes / pow(1024,1),2); $suffix = 'KB' ; } else { $return = $bytes ; $suffix = 'B' ; } return $return . " " . $suffix ; } /*调用函数,传入test目录下的test.txt文件*/ getFilePro( './test/div.html' ); ?> |
结果:
二、目录的操作
目录的操作有:遍历目录、删除、复制、大小统计等
1、遍历目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
/* *遍历目录 *@param string $dirName 目录名 */ function findDir( $dirName ) { $num = 0; /*统计子文件个数*/ $dir_handle = opendir( $dirName ); /*打开目录*/ /*输出目录文件*/ echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">' ; echo '<caption><h2>目录' . $dirName . '下的文件</h2></caption>' ; echo '<tr align="left" bgcolor="#cccccc"' ; echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>' ; while ( $file = readdir( $dir_handle )) { $dirFile = $dirName . '/' . $file ; $bgcolor = $num ++%2==0? '#ffffff' : '#cccccc' ; echo '<tr bgcolor=' . $bgcolor . '>' ; echo '<td>' . $file . '</td>' ; echo '<td>' . filesize ( $dirFile ). '</td>' ; echo '<td>' . filetype ( $dirFile ). '</td>' ; echo '<td>' . date ( 'Y/n/t' , filemtime ( $dirFile )). '</td>' ; echo '</tr>' ; } echo "</table>" ; closedir ( $dir_handle ); /*关闭目录*/ echo "在<b>" . $dirName . "</b>目录下共有<b>" . $num . '</b>个子文件' ; } /*传递当前目录下的test目录*/ findDir( './test' ); |
结果
2、统计目录大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* *统计目录大小 *@param string $dirName 目录名 *@return double */ function dirSize( $dirName ) { $dir_size = 0; if ( $dir_handle = @opendir( $dirName )) { while ( $fileName = readdir( $dir_handle )) { /*排除两个特殊目录*/ if ( $fileName != '.' && $fileName != '..' ) { $subFile = $dirName . '/' . $fileName ; if ( is_file ( $subFile )) { $dir_size += filesize ( $subFile ); } if ( is_dir ( $subFile )) { $dir_size += dirSize( $subFile ); } } } closedir ( $dir_handle ); return $dir_size ; } } /*传递当前目录下的test目录*/ $dir_size = dirSize( './test' ); echo './test目录文件大小是:' . round ( $dir_size / pow(1024,1),2). 'KB' ; |
结果:
3、删除目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* *删除目录 *@param string $dirName 目录名 */ function delDir( $dirName ) { /*php中的mkdir函数就可以创建目录*/ if ( file_exists ( $dirName )) { if ( $dir_handle = @opendir( $dirName )) { while ( $fileName = readdir( $dir_handle )) { /*排除两个特殊目录*/ if ( $fileName != '.' && $fileName != '..' ) { $subFile = $dirName . '/' . $fileName ; if ( is_file ( $subFile )) { unlink( $subFile ); } if ( is_dir ( $subFile )) { delDir( $subFile ); } } } closedir ( $dir_handle ); rmdir ( $dirName ); return $dirName . '目录已经删除' ; } } } /*传递test目录的副本test1*/ echo delDir( './test1' ); |
删除成功的提示信息
4、复制目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/* *复制目录 *@param string $dirSrc 原目录名 *@param string $dirTo 目标目录名 */ function copyDir( $dirSrc , $dirTo ) { if ( is_file ( $dirTo )) { echo '目标目录不能创建' ; /*目标不是一个*/ return ; } if (! file_exists ( $dirTo )) { /*目录不存在则创建*/ mkdir ( $dirTo ); } if ( $dir_handle = @opendir( $dirSrc )) { while ( $fileName = readdir( $dir_handle )) { /*排除两个特殊目录*/ if ( $fileName != '.' && $fileName != '..' ) { $subSrcFile = $dirSrc . '/' . $fileName ; $subToFile = $dirTo . '/' . $fileName ; if ( is_file ( $subSrcFile )) { copy ( $subSrcFile , $subToFile ); } if ( is_dir ( $subSrcFile )) { copyDir( $subSrcFile , $subToFile ); } } } closedir ( $dir_handle ); return $dirSrc . '目录已经复制到' . $dirTo . '目录' ; } } echo copyDir( './test' , '../testcopy' ); |