logo

PHP 获取文件信息及其实例详解

本站 7890
在 PHP 开发中,获取并处理文件的各种属性和元数据是一项常见且重要的任务。这涉及到读取文件大小、创建时间、修改日期以及检查其是否存在等操作。下面将通过详细实例来深入解析如何使用PHP有效地获取这些关键的文件信息。

一、基本函数与用法

1. 文件存在性判断:`file_exists()`

php

<?php
$filename = "example.txt";
if (file_exists($filename)) {
echo "$filename 存在于服务器上.";
} else {
echo "$filename 不存在于指定路径下.";
}
?>

该代码片段会检测"example.txt"这个文件是否存在于当前目录或者给定绝对路径下,并依据结果输出相应的消息。

2. 获取文件尺寸:`filesize()`

php

$filesize = filesize("example.txt");
echo "The size of the file is ".formatSizeUnits($filesize); // 自定义一个格式化单位的方法

function formatSizeUnits($bytes) {
if ($bytes >= 1073741824)
return number_format($bytes / 1073741824, 2).' GB';
elseif ($bytes >= 1048576)
return number_format($bytes / 1048576, 2).' MB';
elseif ($bytes >= 1024)
return number_format($bytes / 1024, 2).' KB';

return $bytes . ' bytes';
}

上述示例首先利用 `filesize()` 函数计算出“example.txt”的字节大小,然后调用自定义方法将其转换为可阅读的形式(如KB或MB)进行展示。

3. 获得最后访问/更改时间和权限:`fileatime()/filemtime()/fileperms()`

以下分别展示了如何获得最后一次访问时间戳、最后一次修改的时间戳以及文件的Unix模式:

php

// 最后一次访问时间
$access_time = date('Y-m-d H:i:s', fileatime('example.txt'));
echo "Last access time: {$access_time}";

// 最后一次修改时间
$modify_time = date('Y-m-d H:i:s', filemtime('example.txt'));
echo "Last modified time: {$modify_time}";

// 权限查看(返回的是八进制数字表示形式)
perms = decoct(fileperms('example.txt')) & 0777;
echo "File permissions: {$permissions}";


二、更高级的操作——FileInfo 类

除了以上的基本功能外,PHP 还提供了强大的 SplFileInfo 和SplFileObject类用于更加细致地管理文件信息。

例如,我们可以新建一个 SplFileInfo 对象以进一步提取关于目标文件的信息:

php

$pathToFile = __DIR__ . '/example.txt';
$info = new \SplFileInfo($pathToFile);

// 输出完整的 absolute path 名称
echo "Absolute Pathname: ", $info->getRealPath(), "\n";

// 返回文件名部分不含扩展名
echo "Basename without extension: ", $info->getBasename('.txt'),"\n";

// 检查文件是否是常规类型而非链接或者其他特殊类型的文件
echo "Is regular File? : ";
var_dump($info->isFile());

// 判断文件是否有执行权限
echo "Has execute permission?: ";
var_dump($info->isExecutable());


总结来说,在PHP编程实践中,理解并熟练运用各种针对文件系统的内置函数和相关对象能够极大地提高开发效率,帮助我们更好地管理和控制项目中的各类资源文件。从简单的判定文件的存在与否到复杂的对文件细节特性的深度挖掘,都离不开这一系列实用工具的支持。

标签: php获取文件信息