PHP文件读写操作

最近学习了PHP的文件操作。PHP文件操作,最基本是要熟练地掌握增加删除*文件内容*。
第一个,先来学习如何增加内容到一个文件中

1. 文件流指针,PHP对文件操作关键元素有一个是文件流指针的,有了它我们才能自由往文件中插入内容和删除内容。那么我们如何获取它呢?
Amswer: 通过PHP提供的函数fopen( filename, mode),这个函数可以打开一个文件,并且返回一个文件流指针。filename参数是一个文件路径,
比如”D:\\data.txt“,这个是指windows系统下D盘的data.txt文件; 第二个参数mode 是打开文件的访问类型。
常见的访问类型有哪些呢?
- 1.只读形式(r)
- 2.写入形式(w)
- 3.追加形式(a)

Example:

$filePoint = fopen('data.txt', 'w');    //以写方式打开文件,如果文件不存在是会新建的
$filePoint = fopen('data.txt', 'r');    //以只读方式打开文件,如果文件不存在会返回false
$filePoint = fopen('data.txt', 'a');    //以追加方式打开文件,在文件最后面追加内容

fclose()函数作用:用于关闭fopen()函数打开的文件流指针。一定要记得打开文件流指针后,不做操作必须要用fclose()函数关闭掉。
Example:


fclose($filePoint);

2. 写操作,我们拿到文件流指针后,那么就该进行读写操作了。如何写呢?
Answer:通过PHP提供的函数fwrite( filePonit, content), 这个函数有两个参数,第一个参数是文件流指针,第二个参数是写入的内容。
Example:

if($filePoint){
    fwrite($filePoint, 'hello');   //把hello写入文件中去;
}
[注意]在写操作前一定要判断操作的文件流指针是否为空,要做必要的判空处理而且使用fopen函数在w访问模型下返回的是文件的指针头。

因此,如果你不指定指针头的偏移量,则会导致这次写入的内容把上一次的内容覆盖。如果只是简单的追加内容,可以用fopen函数在a追加的访问模型下打开文件,这样每次文件指针头都是在最后面,不用你做偏移。

3. 读操作,我们如何读取文件内容呢?
Answer:这个函数第一个参数是文件流指针,第二个参数是读取的长度。
Example:

if($filePoint){
    //在linux和windows,一般4096就是一行
    while(!($buffer = fread($filePoint, 4096)))
        echo $buffer;
}

小结,经过以上的介绍,相信你对文件的操作已经胸有成竹。那么,为什么不动手实现下呢?

最后,我实现一个写文件和读文件,追加内容到文件的代码,简单封装在类里面。

写的不好,欢迎吐槽,手动微笑 :)!


/**
 * Created by PhpStorm.
 * User: zhanghengyu
 * Date: 2016/9/2
 * Time: 18:17
 */
namespace File;
class FileOperate
{

    //写入文件
    public function writeToHeadHandle($username, $content)
    {
        $filePoint = fopen('data.txt', 'w');
        if ($filePoint) {
            fwrite($filePoint, $username."\r\n");
            fwrite($filePoint, $content."\r\n");
        } else {
            echo '打开文件错误';
        }
        fclose($filePoint);
    }

    //追加内容到文件尾部
    public function writeToEndHandle($username, $content)
    {
        $filePoint = fopen('data.txt', 'a');
        if ($filePoint) {
            fwrite($filePoint, $username."\r\n");
            fwrite($filePoint, $content."\r\n");
        } else {
            echo '打开文件错误';
        }
        fclose($filePoint);
    }

    //读取文件
    public function readHandle()
    {
        $filePoint = fopen('data.txt', 'r');
        if ($filePoint) {
            while (($buffer = fgets($filePoint, 4096)) != NULL) {
                echo $buffer.'';
            }
        } else {
            echo '打开文件错误';
        }
        fclose($filePoint);
    }
}

$fileOperateObj = new FileOperate();
$fileOperateObj->writeHandle('张全蛋','我是掘球莱火雷蛋');
$fileOperateObj->readHandle();

效果图:
data.txt
这里写图片描述

好了,这次常见的文件操作就介绍到这里,后面我会基于本次博文实现一个异步的留言板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值