Author: 刘老师(Aaron Lau)
武汉长乐教育,武汉PHP培训课程,版权所有,转载请注明!
PHP中文件的基本属性
课程概要
filetype
获取文件的类型
- 文件属性的一个实例
1. filetype
获取文件的类型
//获取Linux系统下文件类型
//输出file,/etc/passwd为普通文件
echo filetype('/etc/passwd');
//输出link,/etc/grub.conf为链接文件,链接到/boot/grub/grub.conf
echo filetype('/etc/grub.conf');
//输出dir,/etc/为一个目录,即文件夹
echo filetype('/etc/');
//输出block,/dev/sda1为块设备,它是一个分区
echo filetype('/dev/sda1');
//输出char,为字符设备,它是一个字符终端
echo filetype('/dev/tty01');
//获取Windows系统下文件类型
//输出file,C:\WINDOWS\php.ini为一个普通文件
echo filetype("C:\\WINDOWS\\php.ini");
//输出dir,C:\WINDOWS为一个文件夹(目录)
echo filetype("C:\\WINDOWS");
2. 文件属性的一个实例
//声明一个函数,通过传入一个文件名称获取文件大部分属性
function getFilePro($fileName) {
//如果提供的文件或目录不存在,则直接退出函数
if(!file_exists($fileName)) {
echo "目标文件不存在!!<br>";
return;
}
//判断是否是一个普通文件,如果是则条件成立
if(is_file($fileName))
echo $fileName."是一个文件<br>";
//判断是否是一个目录,如果是则条件成立,输出下面语句
if(is_dir($fileName))
echo $fileName."是一个目录<br>";
//用定义的函数输出文件型态
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>";
}
//声明一个函数用来返回文件的类型
function getFileType($fileName) {
//通过filetype()函数返回的文件类型做为选择的条件
switch(filetype($fileName)){
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($bytes) {
//如果提供的字节数大于等于2的40次方,则条件成立
if ($bytes >= pow(2,40)) {
//将字节大小转换为同等的T大小
$return = round($bytes / pow(1024,4), 2);
//单位为TB
$suffix = "TB";
//如果提供的字节数大于等于2的30次方,则条件成立
} elseif ($bytes >= pow(2,30)) {
//将字节大小转换为同等的G大小
$return = round($bytes / pow(1024,3), 2);
//单位为GB
$suffix = "GB";
//如果提供的字节数大于等于2的20次方,则条件成立
} elseif ($bytes >= pow(2,20)) {
//将字节大小转换为同等的M大小
$return = round($bytes / pow(1024,2), 2);
//单位为MB
$suffix = "MB";
//如果提供的字节数大于等于2的10次方,则条件成立
} elseif ($bytes >= pow(2,10)) {
//将字节大小转换为同等的K大小
$return = round($bytes / pow(1024,1), 2);
//单位为KB
$suffix = "KB";
//否则提供的字节数小于2的10次方,则条件成立
} else {
//字节大小单位不变
$return = $bytes;
//单位为Byte
$suffix = "Byte";
}
//返回合适的文件大小和单位
return $return ." " . $suffix;
}
//调用自定义函数,将当前目录下的file.php文件传入,获取属性
getFilePro("file.php");