Gå til innhold

Skrive til fil helt i begynnelsen


Anbefalte innlegg

jeg har lest litt om 'w', 'a' osv. , og hva som brukes ved diverse anledninger. Jeg har prøvd ut en del av dem, men de oppfører seg ikke helt som jeg forventet, så jeg spør her slik at noen kan gi meg et konkret svar.

 

Jeg har en tekstfil som jeg lagrer innlegg på. Men hvilken modus skal jeg åpne i hvis jeg vil at det jeg skriver skal skrives helt i starten av filen og ikke til slutt? Er dette noe jeg kan styre med modusene, eller må jeg løse det på en annen måte?

Lenke til kommentar
Videoannonse
Annonse

PHP-støtter av svært naturlige grunner IKKE skriving i starten av filen. Har selv fundert litt på det her.

$content = $new.'\n'.file_get_contents("file.txt");
$fp = fopen('file.txt', 'w');
fwrite($fp, $content);
fclose($fp);

Dette har bare et problem. Sett at man skal jobbe med en fil som er større enn minne-grensa i PHP? Vel, det finnes en løsning på det også:

rename("file", "old_file");
$fp_new = fopen("file", "w");
$fp_old = fopen("old_file", "r");
fwrite($fp_new, $new_content);
while (!feof($fp_old))
{
 $data = fread($fp_old, 1048576); //opptil 1MiB data lese omgangen, bare for å slippe å loope sånn veldig
 fwrite($fp_new, $data);
}
fclose($fp_old);
fclose($fp_new);
unlink("old_file");

Lenke til kommentar
Du må jo åpne filen før du kan skrive til det.

 

Tenk deg det som er Word-dokument. Vanskelig å skrive til den, uten å åpne det i Word. Når du har åpnet den, så setter du markøren i plass. "r" skal plassere denne i toppen, og når PHP klaprer på tastaturet, kommer dette i starten. "w" plasserer dette i slutten.

6898483[/snapback]

 

Dette var en noe merkelig oppfatning av hva "open-mode" betyr. Se dokumentasjonen under fopen for den korrekte forklaringen. "r" og "w" står for hhv "read" og "write" og er ikke primært knyttet til plassering av pointer selvom de også har en default plassering av denne.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...