我正在使用PHP和fwrite代码,但我希望每个写入位置从文件的开头开始,而不删除它的内容。我正在使用此代码,但它正在写入文件的末尾。
$fr = fopen("aaaa.txt", "a");
fwrite($fr, "text");
fclose($fr);
答案 0 :(得分:2)
所以你想写一个文件的开头,把所有当前内容留在新数据之后?您必须首先获取其现有内容,然后在覆盖新数据后将其重新附加到文件中。
$file = 'aaaa.txt';
$oldContents = file_get_contents($file);
$fr = fopen($file, 'w');
fwrite($fr, "text");
fwrite($fr, $oldContents);
fclose($fr);
如果您想避免将原始文件的内容加载到PHP脚本的内存中,您可以尝试首先写入临时文件,使用循环缓冲区或系统调用将原始文件的内容附加到临时文件,然后删除原始文件并重命名临时文件。
答案 1 :(得分:1)
来自PHP网站:
注意:
如果您已在附加(“a”或“a +”)模式下打开文件,那么您有任何数据 无论文件如何,都将始终追加写入文件 位置
我建议像这样(来自php.net网站):
$handle = fopen('output.txt', 'r+');
fwrite($handle, 'Really long sentence.');
rewind($handle);
fwrite($handle, 'Foo');
rewind($handle);
echo fread($handle, filesize('output.txt'));
fclose($handle);
答案 2 :(得分:0)
$file = 'aaaa.txt';
$tmp = file_get_contents($file);
$tmp = 'text'.$tmp;
$tmp = file_put_contents($file, $tmp);
echo ($tmp != false)? 'OK': '!OK';
答案 3 :(得分:0)
使用此代码:
$file = 'aaaa.txt';
$oldContents = file_get_contents($file);
$fr = fopen($file, 'w');
$newmsg="text".$oldContents;
fwrite($fr, $oldContents);
fclose($fr);
答案 4 :(得分:0)
使用file_get_contents预取旧内容并在编写新内容后附加它是一种方法。 但是,如果文件是动态编写的,并且沿着你需要回到文件开头并添加一些文本的方式,那么这里是如何:
$handle = fopen($FILE_PATH, 'w+');
fwrite($handle, "I am writing to a new empty file
and now I need to add Hello World to the beginning");
预先添加Hello World,请执行以下操作:
$oldText = '';
fseek($handle, 0);
while (!feof($handle)) {
$oldText .= fgets($handle);
}
fseek($handle, 0);
fwrite($handle, "Hello World! ");
fwrite($handle, $oldText);
fclose($handle);
结果将是:
Hello World!我正在写一个新的空文件 现在我需要将Hello World添加到开头
提醒并且像Fabrizio已经注意到:
如果您已在附加(“a”或“a +”)模式下打开文件,那么您有任何数据 无论文件如何,都将始终追加写入文件 位置
答案 5 :(得分:0)
执行这些步骤,而EOF
$handler = fopen('1.txt', 'w+');//1
rewind($handler);//3
$prepend = "I would like to add this text to the beginning of this file";
$chunkLength = strlen($prepend);//2
$i = 0;
do{
$readData = fread($handler, $chunkLength);//4
fseek($handler, $i * $chunkLength);//5
fwrite($handler, $prepend);//6
$prepend = $readData;//7
$i++;
}while ($readData);//8
fclose($handler);
答案 6 :(得分:0)
首先以c+模式打开文件,如果不存在则打开文件或创建新文件并将指针指向文件开头。要获取旧内容,请使用 file_get_contents
并检查文件是否存在。
$fh = fopen($file_path, 'c+');
if (file_exists($file_path)) {
$oldContents = file_get_contents($file_path);
fwrite($fh,"New Content" );
fwrite($fh, $oldContents);
} else {
fwrite($fh,"New Content");
}
fclose($fh);
答案 7 :(得分:-2)
使用fseek()在文件中设置您的位置。
$fr = fopen("aaaa.txt", "r+");
fseek($fr, 0); // this line will set the position to the beginning of the file
fwrite($fr, "text");
fclose($fr);