首页 > 编程技术 > php

opendir、readdir和closedir(PHP操作目录和文件)

发布时间:2016-11-25 16:50

这是一款简单的php目录与文件操作的入门教程,我们主要是讲三个函数opendir、readdir和closedir的使用方法。
 代码如下 复制代码

$dir = "d:www.111cn.net";

//打开目录$dir,并将目录句柄赋给变量$dh
if($dh = opendir($dir))
{
    //通过while循环,使用函数readdir获取文件名
    while(($file_name = readdir($dh)) !== false)
    {
        echo "file name: ".$file_name;
        echo "<br/>";
        echo "<br/>";
    }
   
    //处理完成后,关闭目录句柄$dh
    closedir($dh);
}

/*
opendir定义和用法
opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。

若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。

语法
opendir(path,context)


readdir定义和用法
readdir() 函数返回由 opendir() 打开的目录句柄中的条目。

若成功,则该函数返回一个文件名,否则返回 false。

语法
readdir(dir_stream)

closedir() 函数关闭由 opendir() 函数打开的目录句柄。

语法
closedir(dir_stream)

本教程是一款php ajax返回 json数据实例哦,就是利用ajax实时的接受json.php文件发送的数据请求,并且进行了处理。
 代码如下 复制代码

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>php教程 ajax返回 网页特效on数据实例</title>
<script type="text/网页特效" language="javascript">
var xmlhttp;
function createxmlhttprequest()
{
//var xmlhttp=null;
try
  {
  // firefox, opera 8.0+, safari
  xmlhttp=new xmlhttprequest();
  }
catch (e)
  {
  // internet explorer
  try
    {
    xmlhttp=new activexobject("msxml2.xmlhttp");
    }
  catch (e)
    {
    xmlhttp=new activexobject("microsoft.xmlhttp");
    }
  }
return xmlhttp;
}
function startrequest(id)
{
    createxmlhttprequest();
    try
    {  
     url="json.php?cid="+id;
        xmlhttp.onreadystatechange = handlestatechange;
        xmlhttp.open("post", url, true);
        xmlhttp.send(null);
    }
    catch(exception)
    {
        alert("xmlhttp fail");
    }
}
function handlestatechange()
{
    if(xmlhttp.readystate == 4)
    {
        if (xmlhttp.status == 200 || xmlhttp.status == 0)
        {
            var result = xmlhttp.responsetext;
            var json = eval("(" + result + ")");
            alert('name:'+json.name);
            alert('age:'+json.age);
   alert('id:'+json.id);
        }
    }
}
</script>
</head>

<body>
<div>
        <input type="button" value="ajaxtest" onclick="startrequest(5);" />
    </div>
</body>
</html>

json.php 文件

 代码如下 复制代码

<?php
/**************************************************************
 *
 * 使用特定function对数组中所有元素做处理
 * @param string &$array  要处理的字符串
 * @param string $function 要执行的函数
 * @return boolean $apply_to_keys_also  是否也应用到key上
 * @access public
 *
 *************************************************************/
function arrayrecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayrecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }

        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}

/**************************************************************
 *
 * 将数组转换为json字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function json($array) {
 arrayrecursive($array, 'urlencode', true);
 $json = json_encode($array);
 return urldecode($json);
}

$array = array
       (
          'name'=>'希亚',
          'age'=>20,
    'id'=>$_post['cid']
       );


 

echo json($array);
/*********
 {"name":"希亚","age":"20"}
?>

php 读取文件内容与向文件写入数据这里主要是讲一行行写数据到文件,也一行行读出文件的内容。

*/

 代码如下 复制代码

$fp = fopen($_server['document_root']."/../data/info.dat",'r');

if(!$fp)
{
    echo "<b>error: 打开文件错误,请检查目录是否正确,或稍后再试!</b>";
    exit;
}

while(!feof($fp))
{
    $line = fgets($fp);
    echo $line;
    echo '<br/>';
}

fclose($fp);

//写文件

 代码如下 复制代码

$file = "data.txt";
$content = "内容标题 www.111cn.net 内容第二行";    //要写入的内容

if(!$fp = fopen($file,'a'))                           //打开文件$file时,使用追加模式,此时文件指针会在文件开始处
{
    echo "打开文件$file失败!";
    exit;
}

if(fwrite($fp,$content) === false)                    //将内容写入文件
{
    echo "写入文件失败!";
    exit;
}

echo "写入文件成功!";
fclose($fp);

 

 

创建目录就用mkdir有一点像dos里面的创建目录哦,方法很简单,关于删除目录,这里用了rmdir,但是只删除空目录,不能删除里面有文件或文件夹的目录,如果要删除不是空目录就要用递归来删除了/
 代码如下 复制代码

$dir_name = "www.111cn.net";

if(mkdir($dir_name))    //在当前目录下创建目录tmp_data
{
    echo "目录".$dir_name."创建成功!";
   
    //在目录tmp_data中创建一个文件tmp.txt,并向其中写入一些内容
    if($fp = fopen($dir_name."/www.111cn.net.txt",'a'))
    {
        if(fwrite($fp,"put some contenets into file."))
        {
            echo "<hr>";
            echo "在目录".$dir_name."下创建文件tmp.txt";
        }
    }
}
else
{
    echo "创建目录失败!";
    exit;
}
echo "<hr>";

if(rmdir($dir_name))    //尝试删除目录tmp_data
{
    echo "删除目录".$dir_name."成功!";
}
else
{
    echo "删除目录失败!";
    exit;
}

/*
总结:

*/

方法很简单的php 判断文件或目录是否存在有自带的函数,file_exists文件是否存在,判断目录是否存在我们用is_dir就OK了。

*/

 代码如下 复制代码

$file = "data.txt";
$dir = "www.111cn.net/newdata";

if(file_exists($file))
{
    echo "当前目录中,文件".$file."存在";
    echo "<br/>";
}
else
{
     echo "当前目录中,文件".$file."不存在";
     echo "<br/>";
}
echo "<br/>";
echo "<hr>";
echo "<br/>";

 代码如下 复制代码

if(is_dir($dir))
{
    echo "当前目录下,目录".$dir."存在";
    echo "<br/>";
}
else
{
     echo "当前目录下,目录".$dir."不存在";
     echo "<br/>";
}

 

标签:[!--infotagslink--]

您可能感兴趣的文章: