Eli mitenkäs saisi lisättyä tiedoston alkuun jonkun rivin?
Tapa 1:
- luet tiedoston file():llä taulukkoon
- avaat kyseisen tiedoston fopen():lla "w" muotoon
- kirjoitat fwrite:lla sen rivin tiedostoon, joka pitää olla alussa
- kirjoitat fwrite:lla taulukon tiedot tiedostoon
Tapa 2:
- luet tiedoston file():llä taulukkoon
- avaa fopen():lla jokin väliaikainen tiedosto "w" muotoon
- kirjoitat fwrite:lla sen rivin tiedostoon, joka pitää olla alussa
- kirjoitat fwrite:lla taulukon tiedot tiedostoon
- poista alkuperäinen tiedosto unlink():llä
- muuta väliaikeisen tiedoston nimi rename():lla alkuperäisen tiedoston nimiseksi
Pöh..
Tapa paras:
Kirjota rivi tiedoston loppuun ihan normaalisiti ja tiedostoa luettaessa teet näin:
$data = file("tiedosto.txt");
$data = array_reverse($data); // Nyt uusin rivi on ekana taulukossa.
pöh... riippuu lukeeko tiedoston for:lla vai foreachilla tai ehkä whilellä...
jos for:lla niin paras tapa:
$filu = file("tiedosto.txt");
$max = count($filu)-1;
for($u = $max; $u >= 0; $u--){
...
}
turhaan sitä alkaa array_reverseä käyttämään...
pöh...PHP:n 4.3.0 versiosta lähtien koko tiedoston voi lukea muistiin file_get_contents:lla.
<?php $data = file_get_contents("tiedosto.txt"); $data .= "Uusi tieto"; $ff = fopen("tiedosto.txt", "w"); fwrite($ff, $data); fclose($ff); ?>
mitään array_reverseä/for/foreach ruveta käyttämään... ;)
niih.. mutta tarkoitin tiedoston lukemista :D
eihän siinä ole mitään järkeä tallentaa tiedoston alkuun mitään, kun loppuunkin voi tallentaa helpommin.
Blaa blaa.. tapoja on tuhansia :P
Eikä se nopeus pikkutiedostojen kanssa tunnu.. ehkä sitten kun käsitellään jo muutaman sadan kilotavun kokoisia tiedostoja? :P
odyksen ja trinitin tavat vaikutti aika hyvälle.
lainaus:
niih.. mutta tarkoitin tiedoston lukemista :D
joo ymmärsin, huomaa hymiö edellisen viestini lopussa :) ja pöh(tm) ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.