PHP常用技术文之文件操作和目录操作总结
程序员文章站
2023-08-11 23:19:50
一、基本文件的操作
文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等
一、基本文件的操作
文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等
<?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、遍历目录
/* *遍历目录 *@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、统计目录大小
/* *统计目录大小 *@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、删除目录
/* *删除目录 *@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、复制目录
/* *复制目录 *@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');
上一篇: ai怎么绘制一个多边形的几何图形?