获取文件信息

检查路径是目录还是文件

is_dir 函数返回参数是否是一个目录,而 is_file 是否返回的参数是一个文件。使用 file_exists 检查它是否是。

$dir  = "/this/is/a/directory";
$file = "/this/is/a/file.txt";

echo is_dir($dir) ? "$dir is a directory" : "$dir is not a directory", PHP_EOL,
    is_file($dir) ? "$dir is a file" : "$dir is not a file", PHP_EOL,
    file_exists($dir) ? "$dir exists" : "$dir doesn't exist", PHP_EOL,
    is_dir($file) ? "$file is a directory" : "$file is not a directory", PHP_EOL,
    is_file($file) ? "$file is a file" : "$file is not a file", PHP_EOL,
    file_exists($file) ? "$file exists" : "$file doesn't exist", PHP_EOL;

这给出了:

/this/is/a/directory is a directory
/this/is/a/directory is not a file
/this/is/a/directory exists
/this/is/a/file.txt is not a directory
/this/is/a/file.txt is a file
/this/is/a/file.txt exists

检查文件类型

使用 filetype 检查文件的类型,可能是:

  • fifo
  • char
  • dir
  • block
  • link
  • file
  • socket
  • unknown

直接将文件名传递给 filetype

echo filetype("~"); // dir

请注意,如果文件不存在,filetype 将返回 false 并触发 E_WARNING

检查可读性和可写性

将文件名传递给 is_writableis_readable 函数分别检查文件是可写还是可读。

如果文件不存在,函数会优雅地返回 false

检查文件访问/修改时间

使用 filemtimefileatime 返回上次修改或访问文件的时间戳。返回值是 Unix 时间戳 - 有关详细信息,请参阅使用日期和时间

echo "File was last modified on " . date("Y-m-d", filemtime("file.txt"));
echo "File was last accessed on " . date("Y-m-d", fileatime("file.txt"));

使用 fileinfo 获取路径部分

$fileToAnalyze = ('/var/www/image.png');

$filePathParts = pathinfo($fileToAnalyze);

echo '<pre>';
   print_r($filePathParts);
echo '</pre>';

这个例子将输出:

Array
(
    [dirname] => /var/www
    [basename] => image.png
    [extension] => png
    [filename] => image
)

哪个可以用作:

$filePathParts['dirname']
$filePathParts['basename']
$filePathParts['extension']
$filePathParts['filename']
参数 细节
$ PATH 要解析的文件的完整路径
$选项 四个可用选项之一[PATHINFO_DIRNAME,PATHINFO_BASENAME,PATHINFO_EXTENSION 或 PATHINFO_FILENAME]
  • 如果未传递选项(第二个参数),则返回关联数组,否则返回字符串。
  • 不验证文件是否存在。
  • 只需将字符串解析为部分即可。没有对文件进行验证(没有 mime 类型检查等)
  • 扩展名只是 $path 的最后一个扩展名。文件 image.jpg.png 的路径将是 .png,即使它在技术上是 .jpg 文件。没有扩展名的文件不会返回数组中的扩展元素。