PHP fstat 函数
最后修改于 2025 年 4 月 3 日
PHP fstat
函数从打开的文件指针检索文件状态信息。它提供诸如大小、权限和时间戳等详细信息。
基本定义
fstat
函数返回一个包含文件统计信息的数组。它需要一个打开的文件资源句柄作为其唯一参数。
语法:fstat(resource $stream): array|false
。该函数成功时返回一个关联数组,失败时返回 false。
基本 fstat 示例
此示例显示了如何使用 fstat
获取基本文件信息。
basic_fstat.php
<?php declare(strict_types=1); $file = fopen('example.txt', 'r'); $stats = fstat($file); print_r($stats); fclose($file);
此代码打开一个文件并打印其统计信息。输出包括文件大小、访问时间和其它元数据。使用后务必关闭文件。
获取文件大小
此示例演示了如何从 fstat 结果中提取文件大小。
file_size.php
<?php declare(strict_types=1); $file = fopen('example.txt', 'r'); $stats = fstat($file); if ($stats !== false) { echo "File size: " . $stats['size'] . " bytes"; } fclose($file);
“size”索引包含以字节为单位的文件大小。我们首先检查 fstat 是否成功,然后再访问数组。这是错误处理的好习惯。
检查文件修改时间
此示例展示了如何获取文件的最后修改时间。
modification_time.php
<?php declare(strict_types=1); $file = fopen('example.txt', 'r'); $stats = fstat($file); if ($stats !== false) { $mtime = date('Y-m-d H:i:s', $stats['mtime']); echo "Last modified: " . $mtime; } fclose($file);
“mtime”索引包含最后修改的 Unix 时间戳。我们使用 date() 函数将其格式化为人类可读的格式。这有助于文件监控系统。
文件权限示例
此示例演示了如何使用 fstat 检查文件权限。
file_permissions.php
<?php declare(strict_types=1); $file = fopen('example.txt', 'r'); $stats = fstat($file); if ($stats !== false) { $permissions = decoct($stats['mode'] & 0777); echo "File permissions: " . $permissions; } fclose($file);
“mode”索引包含八进制格式的文件权限。我们将其与 0777 进行按位与操作以仅获取权限位。decoct() 函数将其转换为可读的八进制格式。
比较文件统计信息
此示例比较两个文件的统计信息,以检查它们是否相同。
compare_files.php
<?php declare(strict_types=1); $file1 = fopen('file1.txt', 'r'); $file2 = fopen('file2.txt', 'r'); $stats1 = fstat($file1); $stats2 = fstat($file2); if ($stats1['ino'] === $stats2['ino']) { echo "Files are the same (same inode)"; } else { echo "Files are different"; } fclose($file1); fclose($file2);
“ino”索引包含 inode 号,对于每个文件都是唯一的。比较 inode 比比较文件名更可靠。这有助于检测硬链接。
最佳实践
- 错误处理: 始终检查 fstat 是否返回 false。
- 资源管理: 获取统计信息后关闭文件。
- 性能: 如果需要多次使用结果,请进行缓存。
- 安全性: 在打开文件之前验证文件路径。
来源
本教程通过实际示例介绍了 PHP fstat
函数的使用,展示了它在文件信息检索方面的应用。
作者
列出 所有 PHP 文件系统函数。