PHP文件系统处理(二)

Posted on 2016-04-12 21:15  Y-HKL  阅读(150)  评论(0编辑  收藏  举报

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>