PHP学习笔记二:简单的文件操作

对文文件操作是没门编程语言所不可或缺的,那么接下来就看看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提供这种方式更加的简便,而可以实现相同的效果,所以不是特别要求推荐使用这两个函数进行文件的操作。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值