php中检查文件或目录是否存在的代码小结

  下面是一个简单的检查文件是否存在的实例代码:

  

复制代码 代码如下:

  <?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;

  }