写了几个php函数,用来取得指定文件的信息,主要学习下file_exists、is_file、is_dir、is_readable、is_writeable、filetype方法的用法。
例子:
<?php
/**
* 功能:获取文件信息
* 编辑:www.jb200.com
*/
//设置默认时区
date_default_timezone_set('PRC');
function getFileInfo($filePath){
if(!file_exists($filePath)){
echo '指定的文件不存在!';
return;
}
if(is_file($filePath)){
echo $filePath.'是一个文件'.'<br>';
}
if(is_dir($filePath)){
echo $filePath.'是一个目录'.'<br>';
}
echo '文件的形态:'.getFileType($filePath).'<br>';
echo '文件的大小:'.getFileSize($filePath).'<br>';
if(is_readable($filePath)){
echo '文件可读'.'<br>';
}else{
echo '文件不可读'.'<br>';
}
if(is_writeable($filePath)){
echo '文件可写'.'<br>';
}else{
echo '文件不可写'.'<br>';
}
echo '文件建立的时间:'.date('Y年m月d日',filectime($filePath)).'<br>';
echo '文件最后修改的时间:'.date('Y年m月d日',filemtime($filePath)).'<br>';
echo '文件最后访问的时间:'.date('Y年m月d日',fileatime($filePath)).'<br>';
}
function getFileType($filePath){
switch(filetype($filePath)){
case 'file':
$type.='普通文件';
break;
case 'dir':
$type.='目录文件';
break;
case 'block':
$type.='块设备文件';
break;
case 'char':
$type.='字符设备文件';
break;
case 'fifo':
$type.='命名管道文件';
break;
case 'link':
$type.='符号链接';
break;
case 'unknown':
$type.='未知文件类型';
break;
default:
$type.='没有检测到文件类型';
}
return $type;
}
function getFileSize($filePath){
$bytes=filesize($filePath);
//1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024B
if($bytes > pow(2,40)){
$size = round($bytes/pow(1024,4),2);
$unit = 'TB';
}elseif($bytes > pow(2,30)){
$size = round($bytes/pow(1024,3),2);
$unit = 'GB';
}elseif($bytes > pow(2,20)){
$size = round($bytes/pow(1024,2),2);
$unit = 'MB';
}elseif($bytes > pow(2,10)){
$size = round($bytes/pow(1024,1),2);
$unit = 'KB';
}else{
$size = $bytes;
$unit = 'Byte';
}
return $size.' '.$unit;
}
$filePath = $_SERVER['DOCUMENT_ROOT'].'/test/editor.php';
getFileInfo($filePath);
?>
以下是调用上面的方法的测试结果,进行测试的文件为:F:/www/test/index.php。
输出结果: