一、基本文件的操作
文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等
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' );
|