PHP文件处理函数fopen()打开文件问题

  作者:bea

昨天又复习了一遍PHP文件处理函数,也写了一些小实例,在对文件的操作过程中发现了一个小小的疑问,和大家一起探讨下。 PHP文件处理函数fopen()需要两个必须的参数,一个是文件路径,另一个是打开文件的模式,如果文件打开失败该函数会返回false,如果打开文件成功则返回指向该文件的指针引用句柄。我的疑问是如果希望打开的文件不存在,那么fopen()函数返回的是什么呢?是false吗? 很有可能大家会认为是false,刚开始也是这么认为的,但是我们的思维太片面了。请继续看下

昨天又复习了一遍PHP文件处理函数,也写了一些小实例,在对文件的操作过程中发现了一个小小的疑问,和大家一起探讨下。

PHP文件处理函数fopen()需要两个必须的参数,一个是文件路径,另一个是打开文件的模式,如果文件打开失败该函数会返回false,如果打开文件成功则返回指向该文件的指针引用句柄。我的疑问是如果希望打开的文件不存在,那么fopen()函数返回的是什么呢?是false吗?

很有可能大家会认为是false,刚开始也是这么认为的,但是我们的思维太片面了。请继续看下文。

fopen()函数的第二个参数是指定打开目标文件的模式,问题的答案就在这个模式上面,以模式分情况讨论。

1、目标文件不存在且打开文件模式为"r"只读

看下面的代码:

$filename = "douya.txt";

$fileHandle = fopen($filename,"r");

if($filename != false){

echo "成功打开不存在的文件!";

}else{

echo "不存在的文件打开失败!";

}

?>

上面代码的输出结果是:不存在的文件打开失败!继续看第二种情况。

2、目标文件不存在且打开文件的模式为"w"只写

看下面的代码:

$filename = "douya.txt";

$fileHandle = fopen($filename,"w");

if($filename != false){

echo "成功打开不存在的文件!";

}else{

echo "不存在的文件打开失败!";

}

?>

上面代码的输出结果是:成功打开不存在的文件。与第一种截然不同。

总结:PHP文件处理函数fopen()第二个参数如果是"w"且目标打开文件不存在的时候该函数会试着去创建这个目标文件;而如果模式是"r"只读的话,如果文件不存在则返回false。

上面的问题是我在将字符串写入文件使用fwrite()函数的时候发现的,开始想如果文件不存在,fopen()返回false那么fwrite()函数为什么还能起作用呢?

一点小小的发现和大家共享!还有什么不足的地方可以留言补充下。

有用  |  无用

猜你喜欢