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 相关文章推荐
解析smarty模板中类似for的功能实现
Jun 18 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php输入流php://input使用浅析
Sep 02 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
WAF的正确bypass
Jan 05 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
Laravel下生成验证码的类
Nov 15 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 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的几个常用数字判断函数代码
2012/04/24 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python之os操作方法(详解)
2017/06/15 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
python切割图片的示例
2020/11/12 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
保险专业自荐信范文
2014/02/20 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
JavaScript实现登录窗体
2021/06/22 Javascript