Adattároló fájlok kezelése.
Fájl megnyitása:
- fopen() függvény:
fopen($munkafájl, "fájl_elérésí_útvonala", "megnyitás módja");.
Megnyitás módja = Mit fogunk végrehajtani a megnyitott fájl tartalmával.
Az fopen() függvényben megnyitási módként a "b" értéket is megadhatjuk.
- file() függvény:
$munkafájl = file('fájl_elérésí_útvonala');
Fájlba írás:
fwrite() függvénnyel:
fwrite($munkafájl, mit írunk);
fwrite($munkafájl, mit írunk, és mennyi bájtot);
Munkafájl állományinformációinak lekérdezése:
- stat() azaz statisztikai függvénnyel.
Aktuális munkafájlról lekért statisztikai adatokat, a stat() függvény egy indexelt tömbben tárolja.
Melyik tömb index, mit tárol, a lenti táblázatban megnézhetjük.
$munkafajl_statisztika = stat("munkafájl_elérési_útvonala");
$informacio = $munkafajl_statisztika[7]; // A 7-es szám, a munkafájl méretét adja meg bájtban.
Megnyitott fájl bezárása:
fclose() függvénnyel::
fclose($munkafájl);
A szkript lefutásának végeztével a PHP-nek automatikusan be kell zárnia az összes megnyitott állományt (fájlt).
Ha a bezárást mi határozzuk meg a szkriptben, akkor gyorsabban felszabadulnak a munkafájlok, újabb szkiptek vagy további programok számára.
A megnyitott munkafájlból, adatok kiolvasása:
- fread() függvénnyel. TESZT
$munkafajl= fopen("adatok.txt", "r"); // Fájl megnyitása, beolvasására.
// Megnyitott fájlból, 20 bájt kiolvasása.
$kiolvasando = fread($munkafajl, 20);
// Megnyitott fájlból, 1 karakter beolvasása.
$kiolvasando = fread($munkafajl, 1);
// Megnyitott fájl tartalmának kiolvasása, karakterenként.
do {$egy_karakter = fread($munkafajl, 1); $adatokbol .= $egy_karakter; }
while ($egy_karakter);
String típusú értéket ad vissza.
Ha számokat akarunk kiíratni, akkor a beolvasott értéket, a megfelelő típus-átalakítással (int), egész számmá kell konvertálni.
$kiolvasando = (int) fread($munkafajl, 20);
Elsőre, annyi adatot olvas ki, amennyi bájtot meghatározunk. PL: 20 bájt.
Ha megismételjük a fread() függvényhívást, akkor a következő 20 bájtot olvassa ki.
Ha már nincs 20 bájtnyi adat, akkor a maradék adatokat olvassa be.
Mi a különbség a fread() és fgets() függvény között.
- fgetc() függvény.Egyszerre egy karaktert olvas be. TESZT
Ha, elérte a beolvasandó fájl tartalmának utolsó karakterét, hamis (false) értéket ad eredményül.
$fm= fopen("adatok.txt", "r"); // Fájl megnyitása, beolvasására.
$egy_karakter = fgetc($fm); // Egy karakter beolvasása.
- feof() függvénnyel.
Közli, hogy a fájlmutató, mikor ér a fájl tartalmának végére.
Hasznos például a while ciklussal történő, fájl tartalmának kiolvasásánál.
- fgets() függvénnyel.
Mi a különbség a fread() és fgets() függvény között
- fgetcsv() függvénnyel. A csv kiterjesztésű fájlokhoz. Microsoft Excel vesszővel tagolt fájl.
- fputs() függvénnyel.
Funkcionálisan teljes mértékben megegyezik, az fwrite() függvénnyel
fputs(file,string,length)
<?php
$mf = fopen("test.txt","w");
echo fputs($mf,"Hello World. Testing!");
fclose($mf);
?>
Kimeneten a fenti kódnak, a következő eredménye lesz: 21
A megnyitott munkafájlból, teljes tartalom kiolvasása:
- file() függvénnyel. TESZT
Igen hasznos mindaddig, még a PHP rendelkezésére álló memória el nem fogy.
- fpassthru() függvénnyel.
A fájl tartalmának beolvasási művelete után, autómatikusan bezárja a fájlt.
- readfile() függvénnyel.
Az eddigi függvényeket, csak szekvenciális adatkezelésre tudjuk használni.
Ez annyit jelent, hogy a meglévő fájlokból csak abban a sorrendben érhetünk el adatokat, amilyen sorrendben tartalmuk íródott.
Röviden, a fájlpozíció-jelzőt csak előre tudtuk mozgatni, vissza nem.
Állományadatok véletlenszerű lekérdezése:
Mozgassuk a fájlpozíció-jelzőt előre-hátra úgy, hogy az olvasandó fájlt, minden alkalommal meg keljen nyitnunk.
Azzal, hogy a fájlpozíció-jelzőt a tartami részen belül, tetszőleges helyre tudjuk mozgatni, tetszőleges tartalmi részt írathatunk ki.
A fájlpozíció-jelző elmozdulási értékét, bájtban határozzuk meg.
Példáinkban: $fm változó, a fájl-megnyitása és megnyitott-fájl szavak, rövidítését helyettesíti.(Természetesen, mindenki olyan változónevet írhat helyette, mely neki színpatikus.)
- fseek() függvénnyel.
Példa: A fájlpozíció-jelzőt, az állomány 10-dik bájtja mögé mozgatjuk. Tartalmi rész kiíratása, a 11-ik bájtjával kezdődik.
$fm= fopen("adatok.txt", "r"); // Fájl megnyitása, beolvasására.
fseek($fm, 10); // A fájlpozíció-jelzőt, az állomány 10-dik bájtja mögé mozgatjuk.
$egy_karakter= fgetc ($fm); // Az fgetc() függvény egyetlen karaktert olvas be, jelen esetben a 11-ik karaktert
Megadhatunk egy harmadik értéket is: fseek($fm, eltolás, honnét);
- SEEK_SET: az állomány kezdete + eltolás.
- SEEK_CUR: az aktuális pozíció + eltolás (ez az alapértelmezett érték).
- SEEK_END: az állomány vége + eltolás.
<?php
$file = fopen("test.txt","r");
//Tartalmi rész beolvasásának kezdő pozíciója
fseek($file,"15");
//A rewind() függvény, pozíció-jelzőt, visszaállítja a fájl elejére
rewind($file);
//Lezárjuk a megnyított fájlt.
fclose($file);
?>
- ftell() függvénnyel.
Kiolvashatjuk, azaz ki is írathatjuk a pillanatnyi fájlpozíció-jelző helyzetét, bájtban értendő.
<?php
$file = fopen("test.txt","r");
// print current position
echo ftell($file);
// change current position
fseek($file,"15");
// print current position again
echo "<br />" . ftell($file);
fclose($file);
?>
A fenti kód kimenete a következő lesz: 0; és 15
A file_exists("Fájl Elérési útvonal")
Ha létezik akkor (true) igaz, ha nem létezik akkor (false) hamis értékkel tér vissza.
Példa: file_exists("/home/mappa/adatfájl.dat")
A filesize() függvény
A fájból kiolvasandó bájtok mennyiségét határozza meg, és ha hibába ütközik, akkor (false) hamis értékkel tér vissza.
Példa: filesize("/home/mappa/adatfájl.dat")
A filectime() függvény.
A fájl változásának utólsó idejét adja meg.
Ha a fájl maga "megváltozik", ha éppen létrejön vagy tartalmát módosítják (Írási műveletet végeznek rajta).
Illetve, ha a hozzá kapcsolódó fájlelérési jogosultságok megváltoznak
A filemtime() függvény.
A fájl módosításának utólsó idejét adja meg.
Ha a fájl maga módosul, ha éppen létrejön vagy tartalmát módosítják.
A getdate() függvény.
Dátuminformációt tároló asszociatív tömböt hoz létre és adja vissza a hívás pontjára.
A év (year), hónap (month), nap (mday), óra (hours), perc (minutes), másodperc (seconds) formában.
Az előállítött értéket kinyerés érdekében egy sztring típusú változóhoz rendeljük.
Példa a hónap elérésére: $honap('month');
A PHP belső mutatója, az állománypozíció-jelző.
Azt a pozíciót, pontot, helyet jelöli ki az aktuális, azaz megnyitott fájlban, ahol a következő műveletet fog, végrehajtásra kerülni.