PHP检查目录是否存在?file_exists与is_file、is_dir的区别,以及执行效率的比较

news/2025/2/11 3:41:17/

一、is_file()函数(推荐学习:PHP视频教程)
is_file — 判断给定文件名是否为一个正常的文件

使用方法

bool is_file ( string $filename )
// 注意事项 codeit.org.cn
// 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果 。
返回值

如果文件存在且为正常的文件则返回 TRUE,否则返回 FALSE

二、file_exists()函数
file_exists — 检查文件或目录是否存在

使用方法

bool file_exists ( string $filename )
// 注意事项
// 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型,对 2GB 以上的文件,一些文件系统函数可能返回无法预期的结果 。
返回值

如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE。

三、is_dir()函数
is_dir–检查指定的文件是否是目录。

使用方法

bool is_dir ( string $filename )
返回值

如果文件名存在并且为目录,则返回 true。如果 file 是一个相对路径,则按照当前工作目录检查其相对路径。

四、总结
file_exists = is_dir + is_file

is_file 只判断文件是否存在;

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

is_dir 判断目录是否存在

经过搜索一些相关资料以及性能分析,在使用过程中

文件存在的情况下,is_file比file_exists要快N倍;

文件不存在的情况下,is_file 比 file_exists 要慢;

以上就是PHP is_file、file_exists、is_dir总结的详细内容

判断文件是否存在,有2个常用的PHP函数:is_file 和 file_exists,

判断文件夹是否存在,有2个常用PHP函数:is_dir 和 file_exists,

即 file_exists = is_dir + is_file。

与 file_exists 相比,is_file 与 is_dir 的执行效率如何呢?

分别执行1000次,记录所需时间:

文件存在(当前目录)
is_file:0.4570ms
file_exists:2.0640ms

文件存在(绝对路径3层/www/hx/a/)
is_file:0.4909ms
file_exists:3.3500ms

文件存在(绝对路径5层/www/hx/a/b/c/)
is_file:0.4961ms
file_exists:4.2100ms

文件不存在(当前目录)
is_file:2.0170ms
file_exists:1.9848ms

文件不存在(绝对路径5层/www/hx/a/b/c/)
is_file:4.1909ms
file_exists:4.1502ms

目录存在
file_exists:2.9271ms
is_dir:0.4601ms
目录不存在
file_exists:2.9719ms
is_dir:2.9359ms

is_file( f i l e ) , f i l e e x i s t s ( file),file_exists( file)fileexists(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了,不确定传入的参数是文件还是目录的时候用?

–> 可以预估下,当文件/文件夹不存在的概念比较大时,就用 file_exists。


http://www.ppmy.cn/news/58578.html

相关文章

“五一”假期消防安全知识要牢记之消防安全知识答题活动

“五一”期间,容易出现哪些安全隐患,生产生活中要注意哪些安全事项,一起来看! 森林防火: 1.禁止将火柴、汽油等易燃物带入山林,禁止乱扔火种。 2.景区管理单位要加强防火巡逻,禁止野外火源&am…

用 HTML 语言打造一个超酷的 ChatGPT —— 唤醒你的聊天机器人

概述 聊天机器人相信大家都不会陌生。一方面,聊天机器人让我们的生活更加便利,可以帮我们随时解答问题;另一方面,聊天机器人也是学习编程的一大利器,可以让我们在自己的项目中使用。今天,我们来学习一下如何用 HTML 语言打造一个超酷的 ChatGPT。 首先,让我们明确一下…

武忠祥老师每日一题||定积分基础训练(二)

仍是上一节中提到的基本思想 武忠祥老师每日一题||定积分基础训练(一) 在这个题中,M和N可以利用奇偶性判断。 如下: 从上可知, M ∫ − π 2 π 2 1 d x M\int_{-\frac{\pi}{2}}^{\frac{\pi}{2}}1\,{\rm d}x M∫−…

Redis常用命令

目录 一. 字符串string常用操作命令 二. 哈希hash常用操作命令 三. 列表list常用操作命令 四. 集合set常用操作命令 五. 有序集合sorted set常用操作命令 六. 通用命令 一. 字符串string常用操作命令 SET key value 设置指定key的值GET key 获取指定key的值 SETEX key…

IntelliJ IDEA 社区版2021.3配置SpringBoot项目详细教程及错误解决方法

目录 一、SpringBoot的定义 二、Spring Boot 优点 三、创建一个springboot的项目 四、使用IDEA创建SpringBoot失败案例 一、SpringBoot的定义 Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。 Spring Boot 翻…

JavaScrpit—数据类型转换

目录 1、起 源 理 念 2、特 点 框 架 AngularJS框架 WebSocket协议 3、书 写 位 置 注 释 浏览器调试js代码 4、变量作用 全局变量 局部变量 常量 5、数据类型 数 组 严格检查数据类型 字符串 6、类型转换 字符串转数字 转bool值 能力判断 7、编码方式 …

leetcode657. 机器人能否返回原点

题目描述解题思路执行结果 leetcode657. 机器人能否返回原点 题目描述 机器人能否返回原点 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串 moves 表示。字符 mov…

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值

1992-2022年31省GDP、第一产业增加值、第二产业增加值 第三产业增加值 1、时间:1992-2022年 2、范围:包括31省 3、指标:省GDP、省第一产业增加值、省第二产业增加值、省第三产业增加值 4、缺失情况说明:无缺失 5、来源&#…