zoukankan      html  css  js  c++  java
  • php中检查文件或目录是否存在的代码小结

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

    <?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:lablaphphello.txt does not exist.
    你也可以用file_exists 函数测试某个目录是否存在,示例代码如下:

    if (file_exists("C:lablaphp"))
    {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))
    {
    /* 检查目录是否可读 */
    // http://www.manongjc.com/article/1354.html
    $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)
    {
    // http://www.manongjc.com/article/1353.html
    $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()函数的权限 */
    // http://www.manongjc.com/article/1352.html
    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()函数的权限 */
    // http://www.manongjc.com/article/1355.html
    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, "actionsdata")); //将此文件所在的固有路径替换成空
    $path .= "xmlFiles"; //存放目录名
    /*判断目标目录是否存在,不存在则新建*/
    if(!is_dir($path))
    {
    mkdir($path); //新建目录
    }
    /*记录完整路径和文件名*/
    $filePathAndName = $path.$time.".xml";
    /*打开文件,文件名为<时间戳> + <.xml>*/
    // http://www.manongjc.com/article/1356.html
    $fp = fopen($filePathAndName, "w");
    if(!$fp)
    {
    return false;
    }
    /*写入文件流*/
    $flag = fwrite($fp, $xmlData);
    if(!$flag)
    {
    return false;
    }
    fclose($fp);
    return $filePathAndName;
    } 
  • 相关阅读:
    ACM学习历程—Hihocoder 1288 Font Size(暴力 || 二分)
    ACM学习历程—HDU2476 String painter(动态规划)
    ACM学习历程—BestCoder Round #75
    ACM学习历程—Hihocoder [Offer收割]编程练习赛1
    codeforces 154A 贪心
    分治 最大连续和
    二分 连续上升子序列变形 UVA1471
    POJ3614 贪心+优先队列
    Havel-Hakimi定理 POJ1659
    拓扑排序
  • 原文地址:https://www.cnblogs.com/myhomepages/p/5992654.html
Copyright © 2011-2022 走看看