当前位置:首页 > PHP教程 > php文件操作 > 列表

php 检查文件或目录是否存在代码总结

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-30 13:38:02 浏览: 评论:0 

检查文件或目录是否存在,我们使用了php中常用的函数file_exists,这个函数就可以实现我想要的功能,下面是一个简单的检查文件是否存在的实例代码:

  1. <?php 
  2. $filename = '/path/to/foo.txt'
  3.  
  4. if (file_exists($filename)) { 
  5.     echo "The file $filename exists"
  6. else { 
  7.     echo "The file $filename does not exist"
  8. ?> 

如果文件存在,执行该 PHP 文件的显示结果是:

The file C:blablaphphello.txt exists.

如果文件不存在,执行该 PHP 文件的显示结果是:

The file C:blablaphphello.txt does not exist.

你也可以用file_exists 函数测试某个目录是否存在,示例代码如下:

  1. if (file_exists("C:\blabla\php")) 
  2.   {echo "yes";} 
  3. else 
  4.   {echo "no";} 

实例,代码如下:

  1. /** 
  2.  * 文件或目录权限检查函数 
  3.  * 
  4.  * @access          public 
  5.  * @param           string  $file_path   文件路径 
  6.  * @param           bool    $rename_prv  是否在检查修改权限时检查执行rename()函数的权限 
  7.  * 
  8.  * @return          int     返回值的取值范围为{0 <= x <= 15},每个值表示的含义可由四位二进制数组合推出。 
  9.  *                          返回值在二进制计数法中,四位由高到低分别代表 
  10.  *                          可执行rename()函数权限、可对文件追加内容权限、可写入文件权限、可读取文件权限。 
  11.  */ 
  12. function file_mode_info($file_path
  13.     /* 如果不存在,则不可读、不可写、不可改 */ 
  14.     if (!file_exists($file_path)) 
  15.     { 
  16.         return false; 
  17.     } 
  18.     $mark = 0; 
  19.     if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'
  20.     { 
  21.         /* 测试文件 */ 
  22.         $test_file = $file_path . '/cf_test.txt'
  23.         /* 如果是目录 */ 
  24.         if (is_dir($file_path)) 
  25.         { 
  26.             /* 检查目录是否可读 */ 
  27.             $dir = @opendir($file_path); 
  28.             if ($dir === false) 
  29.             { 
  30.                 return $mark//如果目录打开失败,直接返回目录不可修改、不可写、不可读 
  31.             } 
  32.             if (@readdir($dir) !== false) 
  33.             { 
  34.                 $mark ^= 1; //目录可读 001,目录不可读 000 
  35.             } 
  36.             @closedir($dir); 
  37.             /* 检查目录是否可写 */ 
  38.             $fp = @fopen($test_file'wb'); 
  39.             if ($fp === false) 
  40.             { 
  41.                 return $mark//如果目录中的文件创建失败,返回不可写。 
  42.             } 
  43.             if (@fwrite($fp'directory access testing.') !== false) 
  44.             { 
  45.                 $mark ^= 2; //目录可写可读011,目录可写不可读 010 
  46.             } 
  47.             @fclose($fp); 
  48.             @unlink($test_file); 
  49.             /* 检查目录是否可修改 */ 
  50.             $fp = @fopen($test_file'ab+'); 
  51.             if ($fp === false) 
  52.             { 
  53.                 return $mark
  54.             } 
  55.             if (@fwrite($fp"modify test.rn") !== false) 
  56.             { 
  57.                 $mark ^= 4; 
  58.             } 
  59.             @fclose($fp); 
  60.             /* 检查目录下是否有执行rename()函数的权限 */ 
  61.             if (@rename($test_file$test_file) !== false) 
  62.             { 
  63.                 $mark ^= 8; 
  64.             } 
  65.             @unlink($test_file); 
  66.         } 
  67.         /* 如果是文件 */ 
  68.         elseif (is_file($file_path)) 
  69.         { 
  70.             /* 以读方式打开 */ 
  71.             $fp = @fopen($file_path'rb'); 
  72.             if ($fp
  73.             { 
  74.                 $mark ^= 1; //可读 001 
  75.             } 
  76.             @fclose($fp); 
  77.             /* 试着修改文件 */ 
  78.             $fp = @fopen($file_path'ab+'); 
  79.             if ($fp && @fwrite($fp'') !== false) 
  80.             { 
  81.                 $mark ^= 6; //可修改可写可读 111,不可修改可写可读011... 
  82.             } 
  83.             @fclose($fp); 
  84.             /* 检查目录下是否有执行rename()函数的权限 */ 
  85.             if (@rename($test_file$test_file) !== false) 
  86.             { 
  87.                 $mark ^= 8; 
  88.             } 
  89.         } 
  90.     } 
  91.     else 
  92.     { 
  93.         if (@is_readable($file_path)) 
  94.         { 
  95.             $mark ^= 1; 
  96.         } 
  97.         if (@is_writable($file_path)) 
  98.         { 
  99.             $mark ^= 14; 
  100.         } 
  101.     } 
  102.     return $mark

PHP判断目录是否存在,代码如下:

  1. /**************************************************** 
  2.      * 将xml数据流,写入到xml文件 
  3.      * @param $xmlData 
  4.      * @return bool|string 
  5.      */ 
  6.     function writeXmlFile($xmlData
  7.     { 
  8.         $time = time(); //获取时间戳,用于给文件命名 
  9.         $path = dirname(__FILE__); //获取当前绝对路径 
  10.         $path = substr_replace($path""stripos($path"actions\data")); //将此文件所在的固有路径替换成空 
  11.         $path .= "xmlFiles\"//存放目录名 
  12.  
  13.         /*判断目标目录是否存在,不存在则新建*/ 
  14.         if(!is_dir($path)) 
  15.         { 
  16.             mkdir($path); //新建目录 
  17.         } 
  18.  
  19.         /*记录完整路径和文件名*/ 
  20.         $filePathAndName = $path.$time.".xml"
  21.  
  22.         /*打开文件,文件名为<时间戳> + <.xml>*/ 
  23.         $fp = fopen($filePathAndName"w"); 
  24.         if(!$fp
  25.         { 
  26.             return false; 
  27.         } 
  28.  
  29.         /*写入文件流*/ 
  30.         $flag = fwrite($fp$xmlData); 
  31.         if(!$flag
  32.         { 
  33.             return false; 
  34.         } 
  35.  
  36.         fclose($fp); 
  37.  
  38.         return $filePathAndName
  39.     } 

Tags: php检查文件 php检查目录 存在

分享到: