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 fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
php跨域cookie共享使用方法
Feb 20 PHP
PHP小教程之实现双向链表
Jun 12 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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编码转换
2012/11/05 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php数组转成json格式的方法
2015/03/09 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
用ADODB.Stream转换
2007/01/22 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
Python中logging实例讲解
2019/01/17 Python
基于Python解密仿射密码
2019/10/21 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
关爱女孩行动实施方案
2014/03/13 职场文书
语文教研活动总结
2014/07/02 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
雷锋的观后感
2015/06/10 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
MongoDB支持的数据类型
2022/04/11 MongoDB