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生成HTML静态页面实例代码
Aug 31 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php获取从百度搜索进入网站的关键词的详细代码
Jan 08 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
PHP实现的回溯算法示例
Aug 15 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 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
摩卡咖啡
2021/03/03 咖啡文化
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
php实现读取内存顺序号
2015/03/29 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
初学JavaScript第二章
2008/09/30 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
预备党员公开承诺书
2014/05/28 职场文书
起诉意见书范文
2015/05/19 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书