当前位置:编程学习 > php >>

在php里面什么时候使用is_file和file_exists以及is_dir

简单的说:

如果要判断文件是否存在,用函数 is_file(),如果要判断目录是否存在,用函数 is_dir(),不知道文件或者目录才用file_exists,前两者更快

下面是详细介绍

请问在php编程里面什么时候is_file和file_exists以及is_dir呢,他们有什么区别吗?

is_file($file) file_exists($file)

当$file是目录时,is_file返回false,file_exists返回true

文件存在的情况下,is_file比file_exists要快得多;
要检测文件所在的目录越深,速度差越多,但至少快4倍。

文件不存在的情况下,is_file比file_exists要慢一点点,但可以忽略不计。

目录存在的情况下,is_dir比file_exists要快得多;
目录不存在的情况下,is_dir比file_exists要慢一点点,但可以忽略不计。

结论:
如果要判断文件是否存在,用函数 is_file(),
如果要判断目录是否存在,用函数 is_dir(),

好像没地方需要用file_exists了,不确定传入的参数是文件还是目录的时候用?


在写程序时发现在判断文件是否存在时,有两种写法,有的人用了is_file,有的人用了file_exists,用哪个更好或者说更合适呢?
 
判断文件存在用is_file还是file_exists?

在写程序时发现在判断文件是否存在时,有两种写法,有的人用了is_file,有的人用了file_exists,用哪个更好或者说更合适呢?

看了这篇PHP中file_exists与is_file,is_dir的区别的说法基本明白,PHP的 file_exists = is_dir + is_file
php is_file file_exists判断文件是否存函数


很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢?

PHP的 file_exists = is_dir + is_file

它既可以判断文件是否存在,又可以判断目录是否存在。但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是get,cookies,所以结论是:

  • 如果要判断目录是否存在,请用独立函数 is_dir(directory)
  • 如果要判断文件是否存在,请用独立函数 is_file(filepath)

--------------------------------------------------------------------------------------

is_file 只判断文件是否存在;
file_exists 判断文件是否存在或者是目录是否存在;
is_dir 判断目录是否存在;

查看手册,虽然这两个函数的结果都会被缓存,但是is_file却快了N倍。
还有一个值得注意的:
文件存在的情况下,is_file比file_exists要快N倍;
文件不存在的情况下,is_file比file_exists要慢;
结论是,file_exits函数并不会因为该文件是否真的存在而影响速度,但是is_file影响就大了。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,