
Mathew
Wenn Sie in PHP in eine Datei schreiben, wird das Ende dieser vorhandenen Datei geschrieben.
Wie stellen wir eine Datei voran, die am Anfang dieser Datei geschrieben werden soll?
Ich habe versucht rewind($handle)
Funktion, scheint aber zu überschreiben, wenn der aktuelle Inhalt größer als der vorhandene ist.
Irgendwelche Ideen?

Alex
$prepend = 'prepend me please';
$file="/path/to/file";
$fileContents = file_get_contents($file);
file_put_contents($file, $prepend . $fileContents);
Die file_get_contents-Lösung ist für große Dateien ineffizient. Diese Lösung kann länger dauern, abhängig von der Datenmenge, die vorangestellt werden muss (mehr ist tatsächlich besser), verbraucht jedoch keinen Speicherplatz.
<?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++;
}
?>

misima
$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);

DockeryZ
Wenn Sie fopen() verwenden, können Sie den Modus einstellen, um den Zeiger zu setzen (dh den Anfang oder das Ende.
$afile = fopen("file.txt", "r+");
‘r’ Nur zum Lesen öffnen; Setzen Sie den Dateizeiger an den Anfang der Datei.
‘r+’ Offen zum Lesen und Schreiben; Setzen Sie den Dateizeiger an den Anfang der Datei.

Dillon Burnett
$file = fopen('filepath.txt', 'r+') or die('Error');
$txt = "/n".$string;
fwrite($file, $txt);
fclose($file);
Dadurch wird eine Leerzeile in die Textdatei eingefügt, sodass Sie beim nächsten Schreiben die Leerzeile ersetzen. mit einer Leerzeile und Ihrem String.
Das ist der einzige und beste Trick.
10016800cookie-checkWie stelle ich eine Datei dem Anfang voran?yes
Ein unschöner Weg wäre, den Dateiinhalt zu lesen, alles voranzustellen, was Sie haben, und die gesamte Datei neu zu schreiben. Nicht sicher, ob es einen anderen Weg gibt. Wenn Sie eine kleine Änderung an einer großen Datei vornehmen, ist dies nicht gerade “leicht”, aber wenn Sie an einer kleinen Datei mit 100 Zeichen arbeiten, ist dies in Ordnung.
– Warzig
26. Juli 2010 um 4:50 Uhr
Möglicherweise möchten Sie dies mit UNIX-Tools tun, wenn dies möglich ist: stackoverflow.com/questions/54365/…
– verzeihen
♦
26. Juli 2010 um 5:04 Uhr