在PHP中,如何在重复关闭文件的情况下对文件进行多次读/写

  • 本文关键字:文件 情况下 PHP 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中附加到它的数据

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

如果这不可能的话,我有两种选择,一种是在每个方法中打开和关闭文件句柄,但这似乎效率很低,我不确定单个文件打开/关闭在性能方面的"成本"是多少。另一种选择是将数据转换为数组以便于操作,我可以每次更新数组而不是文件,但我什么时候更新文件?

检查fseek以在文件中移动指针并从中读取,freadfwrite正在向前移动指针。

您必须使用a+而不是r+,请参阅:fopen 的模式

最新更新