PHP 文件写入和读取操作实例详解【必看篇】(2)

• $_SERVER是PHP的超级全局变量(在代码任何地方都可访问,类型是数组),通过$_SERVER['DOCUMENT_ROOT']可取到服务器的默认根目录

服务器的默认根目录可通过php.ini修改(这个可自行百度)

• $_SERVER['DOCUMENT_ROOT']在这里等同于C:/wamp64/www

本小节的结论:推荐使用相对路径

<2>fopen的第二个参数为打开模式

设置打开模式后,我们就相当于为接下来的读写操作设置了权限:

最基本的几个模式:

“r”:只能读取文件,不能写入文件(写入操作被忽略)
“w”:只能写入文件,不能读取文件(读取操作被忽略)
“a”:只追加文件,与“w”类似,区别是“w”删除原有的内容,“a”不删除原有内容,只追加内容

<?php
 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
 $fp = fopen("$DOCUMENT_ROOT/text.txt",'w');
 fwrite($fp,'在写模式下写入');
 fclose($fp);
?>

在设置了写操作的权限后,就能正常地写入文件了

运行后打开C:/wamp64/www/text.txt:

这次我们把权限设置为只读,并尝试写入文本:'在只读模式下写入' ?

<?php
 $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
 $fp = fopen("$DOCUMENT_ROOT/text.txt",'r');
 fwrite($fp,'在读模式下写入');
 fclose($fp);
?>

运行后打开C:/wamp64/www/text.txt,发现文件内容并没有改变,说明由于没有设置相应的权限,操作被忽略了

关于打开模式的网络资料,我想大家最可能找到的是这张表:(图来自W3C)

很全面,但我觉得这张表对新手有些不太友好,让人看后不知多云。 r是只读,w是只写(原来有的内容全删除),a是追加(不删除原有内容),这都好理解。

但r+,w+,和a+的区别和联系讲的实在太模糊了呀。 这里我就想详细地讲一下r+,w+,和a+三者的区别和联系:

首先r+,w+,和a+都是可读可写的,读取时的方式是一样的,关键在于写入方式的不同:

r+: 从文件[头部][覆盖]原有内容 ([不删除]原有内容);

a+:从文件[尾部][追加]内容 ([不删除]原有内容);

w+:[完全删除]原有内容,然后[再添加]新的内容

下面我依次演示上述的结论,首先我们没有写入的时候文本是”I am initialized value”(意为我是初始值)