獲取檔案資訊

檢查路徑是目錄還是檔案

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 檔案。沒有副檔名的檔案不會返回陣列中的擴充套件元素。