zoukankan      html  css  js  c++  java
  • PHP文件系统处理(二)

    1.文件的打开和关闭(读文件中的内容,向文件中写内容)
                读取文件中的内容
                    file_get_contents()     //php5以上

    <?php
    $filename="./test.txt";
    
    //读出文件的内容
    echo file_get_contents($filename);
    echo "<br>";
    
    //向文件中写内容,返回写入到文件内数据的字节数
    echo file_put_contents("./one.txt","123");
    echo "<br>";
    ?>


                    file();
                    readfiel();
                        不足:全部读取,不能读取指定的区域
                    读取部分字符:
                        fopen(URL,mode)
                            mode:
                            r   以只读的模式打开文件
                            r+    比读的方式多了个写
                            w   以只写的方式打开,如果文件不存在,则创建这个文件,并写入数据,如果文件存在,会将源文件中的数据清除,再写入
                            w+  比写的方式多了个读
                            a   以只写的方式打开,如果文件不存在,则创建这个文件,并写入文件,如果原文件有内容,但是不清除文件内容(追加)
                            a+   比写的方式多了个读
                            b   以二进制模式打开文件(图片,电影)
                            t   以文本模式打开文件
                            fread()    //读取指定长度的字符
                            fgetc()    //一次从文件中读取一个字符
                            fgets()    //一次从文件中读取一行字符
                                feof($file);    如果读取文件出错,或到文件结束,则返回真
                写入文件内容
                file_put_contents()         //php5以上
                    如果文件不存在,则创建并写入内容
                    如果文件存在,则删除文件原来的内容,重新写入
                    不足:不能以追加的方式写
                fopen()
                    fwrite()  别名fputs()
                    fwrite(文件的资源(fopen返回的),写的内容)

    <?php
    //如果打开成功则返回资源,如果失败返回false
    $file=fopen("./test.txt","r");
    
    //fread()从文件中读取指定长度的字符
    echo fread($file,5)."<br>";
    
    //从文件中每次读取一个字符
    echo fgetc($file)."<br>";
    
    //从文件中每次读取一行字符
    
    echo fgets($file);
    //关闭文件资源
    fclose($file);
    
    //读取远程文件
    $file=fopen("http://www.163.com", "r");
    
    $str="";
    
    //feof();读取文件出错或文件内容读完,返回真
    while(!feof($file)){
        $str.=fread($file,1024);
    }
    
    echo $str;
    //关闭文件
    fclose($file);
    
    
    $file=fopen("./test.txt","w");
    //向文件中写内容
    fwrite($file,"wwwwwww");
    
    fclose($file);
    
    //以追加的方式写入
    $file=fopen("./test.txt","a");
    
    fwrite($file,"aaaaaaaaa");
    fclose($file);
    ?>


                本地文件
                    ./test.txt
                    C:/appserv/www/index.php
                远程文件
                    http://www.baidu.com等

    2.文件内部指针
                ftell();   返回文件指针读/写的位置
                int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )   在文件指针中定位
                    whence values are:
                        •SEEK_SET - 设定位置等于 offset 字节。
                        •SEEK_CUR - 设定位置为当前位置加上 offset。
                        •SEEK_END - 设定位置为文件尾加上 offset。

                rewind();  文件指针回到文件开始的位置

    <?php
    $file=fopen("./test.txt","r");
    
    //ftell();返回文件指针读写的位置
    echo ftell($file)."<br>";
    
    echo fread($file,10)."<br>";
    echo ftell($file)."<br>";
    
    //fseek(); 在文件指针中定位
    fseek($file,-20,SEEK_END);
    echo ftell($file)."<br>";
    echo fread($file, 20)."<br>";
    
    //返回文件头部
    rewind($file);
    echo ftell($file);
    fclose($file);
    ?>

    用文件处理写的小小留言板

    <?php
    $mess="./file.txt";
    if(isset($_POST["sub"])){
        $strmess=$_POST["name"].'<l>'.$_POST["til"].'<l>'.$_POST["con"].'<l>'.time().'<n>';
        write($mess,$strmess);
        if(file_exists($mess)){
            $con=read($mess);
            //rtrim()去掉右边的字符  为了分隔,把最后一个<n>去掉    
            $con=rtrim($con,"<n>");
            //explode()以<n>分隔字符串
            $rows=explode("<n>", $con);
            foreach ($rows as $row) {
                //list()分割后的字符串赋值给相应的变量
                list($username,$title,$content,$time)=explode("<l>", $row);
                echo '<p>'.$username.'在'.date("Y-m-d H:i:s",$time).'说';
                echo $title."  ";
                echo $content.'</p>';
            }    
        }
    }

    //从文件中读数据
    function read($fileName){
        //
        $file=fopen($fileName, "r");
        //flock(,LOCK_SH)给文件加锁(读出数据)
        if(flock($file, LOCK_SH)){
            //读出文件的全部数据
            $con=fread($file,filesize($fileName));
            //释放锁定
            flock($file, LOCK_UN);
        }
        fclose($file);
        return $con;
    }

    //向文件中写数据
    function write($fileName,$mess){
        //追加写
        $file=fopen($fileName,"a");
        //flock()给文件加锁(写入数据)
        if(flock($file,LOCK_EX)){
            fwrite($file, $mess);
            //释放锁定
            flock($file,LOCK_UN);
        }
        fclose($file);
    }

    ?>
    <form action="8.php" method="post">
        Name:<input type="text" name="name"><br>
        Title:<input type="text" name="til"><br>
        Body:<textarea name="con"></textarea><br>
        <input type="submit" name="sub" value="提交"><br>
    </form>
  • 相关阅读:
    python之内置函数
    装饰器原理剖析
    迭代器&生成器&yield异步
    python之文件操作read
    函数的创建,调用,返回值和传参的讲解
    collections之deque【双向队列】与Queue【单向队列】
    collections之命名元组
    collections系列之OrderedDict【有序字典】与DefaultDict【默认字典】
    collections系列之Counter
    对象之int介绍
  • 原文地址:https://www.cnblogs.com/Y-HKL/p/5372389.html
Copyright © 2011-2022 走看看