Rupal Skrevet 19. september 2006 Del 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? Lenke til kommentar
Martin A. Skrevet 19. september 2006 Del 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. Lenke til kommentar
Rupal Skrevet 19. september 2006 Forfatter Del 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? Lenke til kommentar
Martin A. Skrevet 20. september 2006 Del 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. Lenke til kommentar
Ernie Skrevet 20. september 2006 Del 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"); Lenke til kommentar
MsFoster Skrevet 21. september 2006 Del Skrevet 21. september 2006 mener å huske at jeg brukte a+ for å skrive til starten av en fil. Lenke til kommentar
Ernie Skrevet 21. september 2006 Del 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. Lenke til kommentar
MC2 Skrevet 21. september 2006 Del Skrevet 21. september 2006 sikker på at du trenger å skrive til begynnelsen av fila? prøv hva du klarer med strrev Lenke til kommentar
Ernie Skrevet 21. september 2006 Del 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 Lenke til kommentar
MC2 Skrevet 21. september 2006 Del 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') Lenke til kommentar
Ernie Skrevet 21. september 2006 Del 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 Lenke til kommentar
MC2 Skrevet 22. september 2006 Del 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.... Lenke til kommentar
Torbjørn Skrevet 23. september 2006 Del 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. Lenke til kommentar
Rupal Skrevet 23. september 2006 Forfatter Del 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 Lenke til kommentar
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å