在PHP中,如何通过重复关闭文件对文件进行多次读/写操作

时间:2012-01-14 11:35:05

标签: php fread

我正在创建一个将数据存储在文件中的类,我需要知道是否可以使用一个文件句柄进行多次读/写操作?

我做了一些实验,并使用此代码:

$file_name = 'test.txt';
$file = fopen($file_name, 'r+');
echo fread($file, filesize($file_name)) . "<hr />";
fwrite($file, "|".rand());
echo fread($file, filesize($file_name));
fclose($file);

第一次读取文件,写入工作,但第二个fread为空。

使用此代码:

$file_name = 'test.txt';
$file = fopen($file_name, 'r+');
echo fread($file, filesize($file_name)) . "<hr />";
fwrite($file, "|".rand());
fclose($file);
$file = fopen($file_name, 'r+');
echo fread($file, filesize($file_name));
fclose($file);

第二个fread然后工作,但它不包含在它上方的fwrite中附加到它的数据。

基本上,我想创建一个单独的文件句柄作为类的属性,并且在阅读和编写时让它的方法引用它,但包括其他方法可能做出的任何更改对数据。

如果不可能,我有两个选择,一个是在每个方法中打开和关闭文件句柄但是这看起来效率很低,而且我不确定单个文件打开/关闭的位置&# 39;成本&#39;在表现方面。另一个替代方案是将数据转换为数组以便于操作,我可以每次更新数组而不是文件,但是何时更新文件?

1 个答案:

答案 0 :(得分:2)

查看fseek将指针移到文件中并从那里读取, fread fwrite 正在向前移动指针。

您必须使用a+代替r+,请参阅:fopen的模式