php中检查文件或目录是否存在的代码小结


Posted in PHP onOctober 22, 2012

下面是一个简单的检查文件是否存在的实例代码:

<?php 
$filename = '/path/to/foo.txt'; 
if (file_exists($filename)) { 
echo "The file $filename exists"; 
} else { 
echo "The file $filename does not exist"; 
} 
?>

如果文件存在,执行该 PHP 文件的显示结果是:
The file C:blablaphphello.txt exists.
如果文件不存在,执行该 PHP 文件的显示结果是:
The file C:\blabla\phphello.txt does not exist.
你也可以用file_exists 函数测试某个目录是否存在,示例代码如下:
if (file_exists("C:\blabla\php")) 
{echo "yes";} 
else 
{echo "no";}

实例
/** 
* 文件或目录权限检查函数 
* 
* @access public 
* @param string $file_path 文件路径 
* @param bool $rename_prv 是否在检查修改权限时检查执行rename()函数的权限 
* 
* @return int 返回值的取值范围为{0 <= x <= 15},每个值表示的含义可由四位二进制数组合推出。 
* 返回值在二进制计数法中,四位由高到低分别代表 
* 可执行rename()函数权限、可对文件追加内容权限、可写入文件权限、可读取文件权限。 
*/ 
function file_mode_info($file_path) 
{ 
/* 如果不存在,则不可读、不可写、不可改 */ 
if (!file_exists($file_path)) 
{ 
return false; 
} 
$mark = 0; 
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') 
{ 
/* 测试文件 */ 
$test_file = $file_path . '/cf_test.txt'; 
/* 如果是目录 */ 
if (is_dir($file_path)) 
{ 
/* 检查目录是否可读 */ 
$dir = @opendir($file_path); 
if ($dir === false) 
{ 
return $mark; //如果目录打开失败,直接返回目录不可修改、不可写、不可读 
} 
if (@readdir($dir) !== false) 
{ 
$mark ^= 1; //目录可读 001,目录不可读 000 
} 
@closedir($dir); 
/* 检查目录是否可写 */ 
$fp = @fopen($test_file, 'wb'); 
if ($fp === false) 
{ 
return $mark; //如果目录中的文件创建失败,返回不可写。 
} 
if (@fwrite($fp, 'directory access testing.') !== false) 
{ 
$mark ^= 2; //目录可写可读011,目录可写不可读 010 
} 
@fclose($fp); 
@unlink($test_file); 
/* 检查目录是否可修改 */ 
$fp = @fopen($test_file, 'ab+'); 
if ($fp === false) 
{ 
return $mark; 
} 
if (@fwrite($fp, "modify test.rn") !== false) 
{ 
$mark ^= 4; 
} 
@fclose($fp); 
/* 检查目录下是否有执行rename()函数的权限 */ 
if (@rename($test_file, $test_file) !== false) 
{ 
$mark ^= 8; 
} 
@unlink($test_file); 
} 
/* 如果是文件 */ 
elseif (is_file($file_path)) 
{ 
/* 以读方式打开 */ 
$fp = @fopen($file_path, 'rb'); 
if ($fp) 
{ 
$mark ^= 1; //可读 001 
} 
@fclose($fp); 
/* 试着修改文件 */ 
$fp = @fopen($file_path, 'ab+'); 
if ($fp && @fwrite($fp, '') !== false) 
{ 
$mark ^= 6; //可修改可写可读 111,不可修改可写可读011... 
} 
@fclose($fp); 
/* 检查目录下是否有执行rename()函数的权限 */ 
if (@rename($test_file, $test_file) !== false) 
{ 
$mark ^= 8; 
} 
} 
} 
else 
{ 
if (@is_readable($file_path)) 
{ 
$mark ^= 1; 
} 
if (@is_writable($file_path)) 
{ 
$mark ^= 14; 
} 
} 
return $mark; 
}

PHP判断目录是否存在
/**************************************************** 
* 将xml数据流,写入到xml文件 
* @param $xmlData 
* @return bool|string 
*/ 
function writeXmlFile($xmlData) 
{ 
$time = time(); //获取时间戳,用于给文件命名 
$path = dirname(__FILE__); //获取当前绝对路径 
$path = substr_replace($path, "", stripos($path, "actions\data")); //将此文件所在的固有路径替换成空 
$path .= "xmlFiles\"; //存放目录名 
/*判断目标目录是否存在,不存在则新建*/ 
if(!is_dir($path)) 
{ 
mkdir($path); //新建目录 
} 
/*记录完整路径和文件名*/ 
$filePathAndName = $path.$time.".xml"; 
/*打开文件,文件名为<时间戳> + <.xml>*/ 
$fp = fopen($filePathAndName, "w"); 
if(!$fp) 
{ 
return false; 
} 
/*写入文件流*/ 
$flag = fwrite($fp, $xmlData); 
if(!$flag) 
{ 
return false; 
} 
fclose($fp); 
return $filePathAndName; 
}
PHP 相关文章推荐
PHP编程网上资源导航
Oct 09 PHP
php生成EXCEL的东东
Oct 09 PHP
PHP 中的批处理的实现
Jun 14 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
php自定义函数截取汉字长度
May 15 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
php模拟js函数unescape的函数代码
Oct 20 #PHP
PHP 万年历实现代码
Oct 18 #PHP
php页面缓存ob系列函数介绍
Oct 18 #PHP
php cc攻击代码与防范方法
Oct 18 #PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 #PHP
PHP中替换换行符的几种方法小结
Oct 15 #PHP
php变量范围介绍
Oct 15 #PHP
You might like
PHP脚本的10个技巧(4)
2006/10/09 PHP
MySQL数据源表结构图示
2008/06/05 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
用Python进行简单图像识别(验证码)
2018/01/19 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
值得收藏的10道python 面试题
2019/04/15 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
编辑找工作求职信范文
2013/12/16 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
学生违反校规检讨书
2014/10/28 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
团员自我评价范文
2015/03/10 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers