PHP 获取文件信息

示例

检查路径是目录还是文件

该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("~"); // 目录

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

检查可读性和可写性

将文件名传递给is_writable和is_readable函数,分别检查文件是否可写或可读。

false如果文件不存在,函数将正常返回。

检查文件访问/修改时间

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

echo "文件上次修改时间: " . date("Y-m-d", filemtime("file.txt"));
echo "上次访问文件的时间 " . 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']

参数细节
$路径要解析的文件的完整路径
$选项四个可用选项之一[PATHINFO_DIRNAME,PATHINFO_BASENAME,PATHINFO_EXTENSION或PATHINFO_FILENAME]
  • 如果未传递选项(第二个参数),则返回一个关联数组,否则返回一个字符串。

  • 不验证文件是否存在。

  • 只需将字符串解析为多个部分。不对文件进行验证(不进行mime类型检查等)

  • 扩展名只是“。”的最后一个扩展名。即使从技术上$path  来说,文件的路径image.jpg.png也将是文件。没有扩展名的文件将不返回数组中的扩展元素。.png.jpg