php – 中途改变fopen()模式?

我这段代码:

$file = fopen($path, 'r+');
flock($file, LOCK_EX);
// reading the file into an array and doing some stuff to it
for ($i=0; $i<count($array); $i++)
  {
  fwrite($file, $array[$i]);
  }
flock($file, LOCK_UN);
fclose($file);

基本上我想要做的是:打开文件>锁定它>阅读它>做一些事情>清除文件>写入文件>解锁它>关闭它.

问题是清算部分.我知道我可以用fopen($file,’w’)做到这一点,但随后阅读将是一个问题.也许我可以以某种方式改变模式?

保罗,任何帮助都会受到赞赏

解决方法:

如果使用fseek将指针设置为0,则可以像这样运行ftruncate:

// reading the file into an array and doing some stuff to it

//1
fseek($handle,0); //Set the pointer to the first byte

//2
ftruncate($handle,filesize("yourfile.ext")); //from the first byte to the last truncate

//3 - File should be empty and still in writing mode.

for ($i=0; $i<count($array); $i++)
{
    fwrite($file, $array[$i]);
}

随着ftruncate意识到这些问题,请考虑第二个参数:

>如果size大于文件,则文件以null字节扩展.
>如果size小于文件,则文件将被截断为该大小.
> http://www.php.net/manual/en/function.ftruncate.php
> http://www.php.net/manual/en/function.fseek.php

上一篇:代码示例_IO_fseek


下一篇:php – 转换使用fopen卷曲的代码,因为主机阻塞了fopen