您的位置:首页 > 编程语言 > PHP开发

PHP文件读写操作

2016-09-02 19:00 429 查看

最近学习了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



好了,这次常见的文件操作就介绍到这里,后面我会基于本次博文实现一个异步的留言板。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: