对文文件操作是没门编程语言所不可或缺的,那么接下来就看看PHP的文件操作,当然这个仅仅是作为个人学习的一点记录,写什么仅随心而定。
好吧,文件操作(读和写)三布曲:
1、打开一个文件,并且告诉操作系统你要做什么类型的操作(读?还是写?怎么读?怎么写?)
2、从文件中读取或者写入数据
3、关闭文件
在PHP中打开一个文件用函数:fopen(),这个函数接受两个参数,第一个是要打开的文件(包含文件路径),第二个是要告诉操作系统打开文件的方式。
对于第一个参数没什么好说的,但是这里有个关于定义文件路径的技巧。
例如:要打开文件位于当前文件的父级目录的php文件夹里面,那么我们定义文件路径的时候可以这样:
$document = __DIR__;
$filepath = str_replace("\\","/",$document) . '../../php/text.txt';
//通过使用这种相对目录可以在后期不需要更改目录,使用正斜线(/)可以跨UNix和windows平台
$fp = fopen( $filepath,'wb' );exit();
好,路径定义之后就是关于打开文件的模式,这里的话常用的就是:
wb:写模式
rb:读模式
ab:追加模式
推荐常用的就是这么些,而且推荐都把那个b加上,因为这种也是增加代码可移植性的一个技巧,解决跨平台,以二进制方式读取、打开、追加。
打开文件之后就是读取、写入数据,这里的话可以查看文档,方法有很多。
之后就是关闭文件:
fclose( $fp );
文件锁可以很好的控制多个用户同时向一个文件中写数据的时候的顺序问题,从而不会导致写入文件中的数据是一些没有意义的数据。
如下所示当向一个文件中写数据的时候需要用到文件锁:
$document = __DIR__;
$filepath = str_replace("\\","/",$document) . '../../php/text.txt';
//通过使用这种相对目录可以在后期不需要更改目录,使用正斜线(/)可以跨UNix和windows平台
$fp = fopen( $filepath,'wb' );exit();
if( !$fp ){
die( 'no' );
}
flock( $fp,LOCK_EX );//锁文件
fwrite( $fp,'hello' );
flock( $fp,LOCK_UN );//释放锁
LOCK_EX:独占锁
LOCK_UN:释放锁
LOCK_SH:共享锁
因为读文件一般不存在混乱的现象所以我们一般就写文件就用独占锁,而读文件的时候就用共享锁。
另外在这里再说明一点,就是在以后的文件读取和写入的时候我们一般不会一直遵循上面的三步曲,而是通常用:
file_get_contents($filename)和file_put_contents($filename)来替代,因为PHP提供这种方式更加的简便,而可以实现相同的效果,所以不是特别要求推荐使用这两个函数进行文件的操作。