2012-11-19 17 views
9

私はfile_exists()を読んで、それがディレクトリを指している場合は戻ることもできます。ファイルだけが存在するかどうかを確認する最速の方法は何ですか?現時点で PHPはファイルが存在し、ディレクトリが存在しないかどうかを確認します

は私が持っている:

/** 
* 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秒間の時間がかかりますので、できるだけ早く行うことができます。

+1

ファイルへの* symlinks *の結果はどうなるでしょうか? –

答えて

21

あなたはis_file機能を探しています:

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

docs: "注:PHPの整数型が署名されており、多くのプラットフォームで32ビット整数が使用されているため、ファイルシステム関数によっては2GBを超えるファイルに対して予期しない結果が返ることがあります。これは心配することは何ですか?ログファイルが制御不能な場合を除いて、ファイルがこのサイズに達しない時間は99%です –

+0

これはis_fileを使用して私を置きますhttp://php.net/manual/en/function.is-file.php#46845 –

+1

@ジョンハードと言う。 *いくつか* ***は予期しない結果を返すことがあります...私はこれが問題であったケースに遭遇していません。 YMMV。 – deceze

2
public function exists() { 
    return !is_dir($this->_file) && file_exists($this->_file); 
} 
1

あなただけファイルのためにこれを試すことができます。 file_existsの代わりに呼び出すカスタム関数

function custom_file_exists($filePath) 
    { 
      if((is_file($filePath))&&(file_exists($filePath))){ 
      return true; 
      } 
      return false; 
    } 
関連する問題