当前位置:首页 > 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. } 
  9. ?> 

如果文件存在,执行该 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.     /* 如果不存在,则不可读、不可写、不可改 */ 
  15.     if (!file_exists($file_path)) 
  16.     { 
  17.         return false; 
  18.     } 
  19.     $mark = 0; 
  20.     if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') 
  21.     { 
  22.         /* 测试文件 */ 
  23.         $test_file = $file_path . '/cf_test.txt'; 
  24.         /* 如果是目录 */ 
  25.         if (is_dir($file_path)) 
  26.         { 
  27.             /* 检查目录是否可读 */ 
  28.             $dir = @opendir($file_path); 
  29.             if ($dir === false) 
  30.             { 
  31.                 return $mark; //如果目录打开失败,直接返回目录不可修改、不可写、不可读 
  32.             } 
  33.             if (@readdir($dir) !== false) 
  34.             { 
  35.                 $mark ^= 1; //目录可读 001,目录不可读 000 
  36.             } 
  37.             @closedir($dir); 
  38.             /* 检查目录是否可写 */ 
  39.             $fp = @fopen($test_file, 'wb'); 
  40.             if ($fp === false) 
  41.             { 
  42.                 return $mark; //如果目录中的文件创建失败,返回不可写。 
  43.             } 
  44.             if (@fwrite($fp, 'directory access testing.') !== false) 
  45.             { 
  46.                 $mark ^= 2; //目录可写可读011,目录可写不可读 010 
  47.             } 
  48.             @fclose($fp); 
  49.             @unlink($test_file); 
  50.             /* 检查目录是否可修改 */ 
  51.             $fp = @fopen($test_file, 'ab+'); 
  52.             if ($fp === false) 
  53.             { 
  54.                 return $mark; 
  55.             } 
  56.             if (@fwrite($fp, "modify test.rn") !== false) 
  57.             { 
  58.                 $mark ^= 4; 
  59.             } 
  60.             @fclose($fp); 
  61.             /* 检查目录下是否有执行rename()函数的权限 */ 
  62.             if (@rename($test_file, $test_file) !== false) 
  63.             { 
  64.                 $mark ^= 8; 
  65.             } 
  66.             @unlink($test_file); 
  67.         } 
  68.         /* 如果是文件 */ 
  69.         elseif (is_file($file_path)) 
  70.         { 
  71.             /* 以读方式打开 */ 
  72.             $fp = @fopen($file_path, 'rb'); 
  73.             if ($fp) 
  74.             { 
  75.                 $mark ^= 1; //可读 001 
  76.             } 
  77.             @fclose($fp); 
  78.             /* 试着修改文件 */ 
  79.             $fp = @fopen($file_path, 'ab+'); 
  80.             if ($fp && @fwrite($fp, '') !== false) 
  81.             { 
  82.                 $mark ^= 6; //可修改可写可读 111,不可修改可写可读011... 
  83.             } 
  84.             @fclose($fp); 
  85.             /* 检查目录下是否有执行rename()函数的权限 */ 
  86.             if (@rename($test_file, $test_file) !== false) 
  87.             { 
  88.                 $mark ^= 8; 
  89.             } 
  90.         } 
  91.     } 
  92.     else 
  93.     { 
  94.         if (@is_readable($file_path)) 
  95.         { 
  96.             $mark ^= 1; 
  97.         } 
  98.         if (@is_writable($file_path)) 
  99.         { 
  100.             $mark ^= 14; 
  101.         } 
  102.     } 
  103.     return $mark; 
  104. } 

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检查目录 存在

分享到: