PHP 文件写入和读取操作实例详解【必看篇】(5)
fgets()其实还有第二个参数,这个参数规定了每一行能读取的最大字节数(注意是字节数不是字符数):
【注意】在UTF-8编码下汉字3字节,字母1字节下面我修改上面的一行,代码,使获取的每一行最大字符数为3(也即字节数为9)
$line = fgets($fp,10);
Demo:
【注意】:这里我fgets()里第二个参数为10,为什么是10呢?因为
1.这里的长度是按字节数算的
2.一个汉字占3个字节。fgets($fp,10)代表一次最多读取10 - 1 = 9字节
4.一次读完全部文件 ——fpassthru() or file()? fpassthru()将读取文件并直接输出(无处理过程)
<?php $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $fp = fopen("$DOCUMENT_ROOT/text.txt",'r'); fpassthru($fp); fclose($fp); ?>
运行结果:
【注意】这里需要注意一点的是,我们并没有从fpassthru($fp)获取到返回值然后echo到页面上去,也就是说这个方法是会强制输出获取的内容的,而并不是像之前例子的方法那样返回文本,允许我们保存到变量中才将其输出
将读取到的全部内容保存到一个数组中,每个数组元素为一行的内容——fille()
<?php $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; $file_array = file("$DOCUMENT_ROOT/text.txt");//取到文件数组 foreach ($file_array as $value) {//输出数组元素 echo $value."<br/>"; } ?>
【注意】:这里我们并不需要写fopen和fclose哦!也就是说file()方法已经帮我们做了这一步了
四.使用fclose方法关闭文件
fclose()将返回一个布尔值,成功关闭为true,关闭失败为false(失败的情况很少出现,可不考虑) 是否打开文件后一定要关闭?
1即使不手写fclose,在PHP脚本执行结束后,也会自动关闭文件的
2但在一个长时间执行的脚本中,如果不写关闭文件的fclose(),在文件加锁的情况下会造成操作的阻塞,所以,写fclose是个好习惯
五.文件指针的移动
我们上面调用的读取文件的函数,其实都是基于文件指针去打印的,每读取一段字节内容,文件指针就向后移动一段字节长度,直到被读取的文件最大字节长度为止