【问题标题】:PHP check if file exists and not directoryPHP检查文件是否存在而不是目录
【发布时间】:2022-12-01 11:11:43
【问题描述】:

我看了file_exists()如果它指向一个目录也可以返回turn。检查是否只有文件存在的最快方法是什么?

目前我有:

/**
 * Check if the file exists.
 *
 * @return bool
 */
public function exists() {
    if(is_null($this->_file)) return false;

    return (!is_dir($this->_file) && file_exists($this->_file)) ? true : false;
}

我发现很多关于检查文件是否存在于 PHP 中的帖子,但没有关于目录以及如何最好地检查它的内容。

这个方法可以被调用 1000 秒,所以我真的可以尽可能快地完成它。

【问题讨论】:

  • 你应该得到什么结果符号链接到文件?

标签: php


【解决方案1】:

您正在寻找 is_file 功能:

public function exists() {
    return $this->_file !== null && is_file($this->_file);
}

【讨论】:

  • 来自文档:“注意:因为 PHP 的整数类型是有符号的,而且许多平台使用 32 位整数,所以某些文件系统函数可能会为大于 2GB 的文件返回意外结果。”这有什么好担心的吗? 99% 的时间没有文件会达到这个大小,除非它是一个失控的日志文件
  • 这也让我无法使用 is_file php.net/manual/en/function.is-file.php#46845
  • @John很难说。一些 可能返回意想不到的结果......我还没有遇到过这是一个问题的情况。 YMMV。
  • @John 而第二个问题是非常荒谬的,因为它对所有相对路径在所有功能中。这就是您通常希望避免使用相对路径的原因。
【解决方案2】:
public function exists() {
    return !is_dir($this->_file) && file_exists($this->_file);
}

【讨论】:

    【解决方案3】:

    你可以试试这个仅文件.它是您将调用的自定义函数,而不是 file_exists 函数

     function custom_file_exists($filePath)
        {
              if((is_file($filePath))&&(file_exists($filePath))){
                return true;
              }   
              return false;
        }
    

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2011-02-25
      • 2021-09-11
      • 2014-01-11
      相关资源
      最近更新 更多