Rupal Skrevet 19. september 2006 Skrevet 19. september 2006 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?
Martin A. Skrevet 19. september 2006 Skrevet 19. september 2006 fopen('fil.txt', 'r') skal sette "markøren" i starten av filen. Om den ikke gjør det, kan du lage noe som leser inn filen, legger til den på slutten av den nye filen du skal skrive, skriver til en ny fil, sletter den gamle, og endrer navn til hva den gamle het.
Rupal Skrevet 19. september 2006 Forfatter Skrevet 19. september 2006 Hm.. det første du sier er jo når du skal lese? Jeg tenkte på når man skriver til fila.. Er det sånn at alt blir skrevet helt til slutt på fila? Eller kan man kontrollere dette ved å sette noe annet?
Martin A. Skrevet 20. september 2006 Skrevet 20. september 2006 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.
Ernie Skrevet 20. september 2006 Skrevet 20. september 2006 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");
MsFoster Skrevet 21. september 2006 Skrevet 21. september 2006 mener å huske at jeg brukte a+ for å skrive til starten av en fil.
Ernie Skrevet 21. september 2006 Skrevet 21. september 2006 mener å huske at jeg brukte a+ for å skrive til starten av en fil. 6908329[/snapback] a+ er append med leserettigheter. Den vil legge nytt innhold tilslutt i fila.
MC2 Skrevet 21. september 2006 Skrevet 21. september 2006 sikker på at du trenger å skrive til begynnelsen av fila? prøv hva du klarer med strrev
Ernie Skrevet 21. september 2006 Skrevet 21. september 2006 (endret) Hjelper lite hvis du skal jobbe med store filer, og ikke minst når man skal hente ut eller legge til linjer og ikke x bytes. Endret 21. september 2006 av Ernie
MC2 Skrevet 21. september 2006 Skrevet 21. september 2006 nei, mener at det inni fila skal være reverst, og når du henter ut så må du reversere tilbake. og når du skriver til slutten av fila så skriver du egentlig på begynnelsen. og da funker det med linjer også. (mange 'og')
Ernie Skrevet 21. september 2006 Skrevet 21. september 2006 (endret) Ja, men det forutsetter at du leser inn hele fila i minnet, det er ikke alltid mulig Endret 21. september 2006 av Ernie
MC2 Skrevet 22. september 2006 Skrevet 22. september 2006 hmm, det stemmer... man kan jo ikke streame linjer hvis alt er omvendt... og man kan sikkert ikke telle antall linjer uten å lese fila....
Torbjørn Skrevet 23. september 2006 Skrevet 23. september 2006 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.
Rupal Skrevet 23. september 2006 Forfatter Skrevet 23. september 2006 (endret) Takk for mange svar, men ennå litt små usikker på hvordan jeg skal løse det.. Får kanskje teste ut Ernies forslag først:) Endret 23. september 2006 av LBoN
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå