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 相关文章推荐
在Windows中安装Apache2和PHP4的权威指南
Oct 09 PHP
APMServ使用说明
Oct 23 PHP
php include的妙用,实现路径加密
Jul 29 PHP
php 删除cookie和浏览器重定向
Mar 16 PHP
php数字转汉字代码(算法)
Oct 08 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
php数据访问之查询关键字
May 09 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
checkbox使用示例
2013/08/23 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python在不同条件下的输入与输出
2020/02/13 Python
浅谈Python协程
2020/06/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
环境工程求职简历的自我评价范文
2013/10/24 职场文书
自荐信范文
2013/12/10 职场文书
洗发露广告词
2014/03/14 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
2016开学第一课心得体会
2016/01/23 职场文书