fopen模式w +并读取文件?

时间:2015-04-27 19:14:57

标签: php fopen mode

我经历了所有模式并试图了解你可以在哪里应用其中一些模式,我偶然发现了var server_name = "http://127.0.0.1:5000/"; var socket = io.connect(server_name); socket.on('error',function(data){ console.log(data.txt); socket.disconnect(); }); function submitclick() { var text="hello"; if(socket.connected ==false) socket= io.connect({'forceNew': true}); console.log(socket.connected); } 。现在我了解该模式的工作原理,但w的目的是什么?显然,如果我们在打开文件后立即使用w+,它将无法工作,因为文件将被截断,所以我认为在文件中写入内容然后稍后从中读取它会很好因此,我决定这样测试:

fopen

由于某种原因,它以后不会读取文件的内容 有人可以向我解释请问哪里适用,我的代码有什么问题? $handle = fopen('new.txt', 'w+'); fwrite($handle, '123'); $file = fread($handle, filesize('new.txt')); var_dump($file); // string '' (length=0) fclose($handle); 返回3,因此它不会删除文件的内容,我认为从我们打开文件的那一刻开始使用filesize并且它不会更新?然后它让我更加困惑为什么我们会使用模式$handle并同时从文件中读取? 修改:我甚至可以理解如何使用w+在文件中写一些内容,然后再次使用r+检查我写的内容,如下所示:< / p>

fopen

如果我对$handle = fopen('new.txt', 'r+'); fwrite($handle, '123'); $handle = fopen('new.txt', 'r+'); $file = fread($handle, filesize('new.txt')); var_dump($file); fclose($handle); 做同样的事情,它会明显地删除内容,而我将无法阅读任何内容?

2 个答案:

答案 0 :(得分:2)

带有fopen()选项的

w+在开头打开文件进行读/写,并将长度截断为0.它与写入新的空文件基本相同。

请参阅此处的fopen()用法:http://php.net/manual/en/function.fopen.php

w +主要用于&#34;回读&#34;你写的是什么。在你的情况下,你正在使用fread()函数读取&#34;转发&#34;来自你的指针,它在执行fwrite()之后当前位于文件的末尾,这可以解释为什么你得到空的内容。

我希望这能回答你的问题。

答案 1 :(得分:1)

@Ye。关于指针是正确的。一旦执行了fwrite,指针就会在文件的末尾。您需要 fseek() 才能返回文件的开头。

$handle = fopen('new.txt', 'w+');
fwrite($handle, '123');
fseek($handle, 0);
$file = fread($handle, filesize('new.txt'));
var_dump($file);  // string '123' (length=3)
fclose($handle);