为了账号安全,请及时绑定邮箱和手机立即绑定

我如何将文件放在开头?

我如何将文件放在开头?

PHP
胡说叔叔 2020-02-01 17:04:49
在PHP中,如果您写入文件,它将写入该现有文件的末尾。我们如何在文件的开头加上一个要写入的文件?我已经尝试过rewind($handle)功能,但是如果当前内容大于现有内容,似乎会覆盖。有任何想法吗?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

file_get_contents解决方案对于大型文件而言效率不高。此解决方案可能需要更长的时间,具体取决于需要添加的数据量(实际上越多越好),但是它不会消耗内存。


<?php


$cache_new = "Prepend this"; // this gets prepended

$file = "file.dat"; // the file to which $cache_new gets prepended


$handle = fopen($file, "r+");

$len = strlen($cache_new);

$final_len = filesize($file) + $len;

$cache_old = fread($handle, $len);

rewind($handle);

$i = 1;

while (ftell($handle) < $final_len) {

  fwrite($handle, $cache_new);

  $cache_new = $cache_old;

  $cache_old = fread($handle, $len);

  fseek($handle, $i * $len);

  $i++;

}

?>


查看完整回答
反对 回复 2020-02-01
?
森林海

TA贡献2011条经验 获得超2个赞

$prepend = 'prepend me please';


$file = '/path/to/file';


$fileContents = file_get_contents($file);


file_put_contents($file, $prepend . $fileContents);


查看完整回答
反对 回复 2020-02-01
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

$filename  = "log.txt";

$file_to_read = @fopen($filename, "r");

$old_text = @fread($file_to_read, 1024); // max 1024

@fclose(file_to_read);

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

fwrite($file_to_write, "new text".$old_text);


查看完整回答
反对 回复 2020-02-01
  • 3 回答
  • 0 关注
  • 423 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信