/ / PHP. Práca so súbormi a adresármi

PHP Práca so súbormi a adresármi

Databázy MySQL a Access sa čoraz viac stávajúverejné úložné médiá. Ale začiatkom 90. rokov bolo populárne pracovať so súbormi v PHP, ukladať záznamy do formátovaných textových súborov vo formáte CSV, oddelených novými riadkami.

Základné princípy práce

Databázy sú pohodlné, ale mal by ich každý vývojármať aspoň základné vedomosti o tom, ako čítať a zapisovať súbory. Možno si mnohí pomyslia na otázku: „Prečo to musím vedieť? Ak používam súbory, sú napísané v XML a používam iba syntaktický analyzátor. “

Učenie php

Tu je niekoľko dôvodov, prečo by ste mohli potrebovať súbory:

  1. Ak chcete presunúť binárne údaje (napríklad obrazové súbory) do databázy BLOB (Binary Large Object).
  2. Importujte údaje (napríklad e-mailové adresy) exportované zo staršej databázy alebo aplikácie.
  3. Export informácií z databázy do textového súboru na offline spracovanie.

Čítanie súborov a zápis sú základné operácie.Ak si potrebujete prečítať dokument, musíte ho najskôr otvoriť. Potom by ste si mali prečítať čo najviac obsahu a potom súbor zavrieť. Ak chcete zapísať informácie do dokumentu, musíte ich najskôr otvoriť (alebo prípadne vytvoriť, ak ešte neboli vytvorené). Potom napíšte potrebné údaje a po dokončení ich zatvorte.

Je tiež vhodné používať vstavané funkcie, ktoré sa automaticky otvárajú a zatvárajú. Sú k dispozícii v jazyku PHP 5. Mali by ste sa tiež oboznámiť s atribútmi súborov, teda s jeho vlastnosťami.

Môžu povedať:

  • o veľkosti;
  • poskytnúť informácie o tom, kedy bol naposledy kontaktovaný;
  • povedz o majiteľovi a pod.

Najlepšie je naučiť sa všetky základné atribúty práce so súbormi v PHP. To výrazne uľahčí prácu.

História súborov

Možno budete musieť vedieť, kedy bol súbor naposledy upravený. V takom prípade prídu na rad nasledujúce funkcie: fileatime (), filemtime () a filectime ().

Php programovanie
<?php $ formatDate = "D d M Y g: i A"; $ timeA = fileatime ($ súbor); $ timeM = filemtime ($ súbor); $ timeC = filectime ($ súbor);  echo $ súbor. "bol zobrazený". dátum ($ formatDate, $ timeA). ". <br>"; echo $ súbor. msgstr "mal poslednú zmenu i-uzla". dátum ($ formatDate, $ timeM). ". <br>"; echo $ súbor. „bolo zmenené“. dátum ($ formatDate, $ timeC). ".";

Tu kód načíta poslednú časovú pečiatku prístupu a zobrazí ju:

  • C: Windowsfile.ini bol zobrazený 19. septembra 2018 16:34.
  • C: Windowsfile.ini bol upravený 8. októbra 2018 v 2:03.
  • C: Windowsfil.ini bol zmenený v utorok 16. decembra 2017 4:34 hod.

Funkcia filectime () zobrazuje čas zmeny rôznych informácií spojených so súborom (napríklad prístupové práva) a filemtime () zobrazuje zmenu samotného súboru.

Funkcia date () bola použitá na formátovanie časovej pečiatky Unixu vrátenej funkciami file * time ().

Podať alebo nie?

Ak chcete zistiť, či PHP skutočne pracuje so súbormi, môžete pomocou funkcie is_file () alebo is_dir () skontrolovať, či ide o adresár.

<? php echo $ súbor. (is_file ($ file)? "": "nie"). "súbor. <br>"; echo $ súbor. (is_dir ($ file)? "": "nie"). "adresár.";

Príklad výstupu kódu:

  • C: súbor Windowsfile.ini.
  • C: Windowsfile.ini nie je adresár.

Môžete sa tak vyhnúť chybám a neopatrným otvorením „nie súboru“. V PHP je práca so súbormi a adresármi podobná.

Povolenia súborov

Pred prácou na súbore môžete skontrolovať, či je čitateľný alebo zapisovateľný. Aby ste to dosiahli, musíte použiť funkcie is_writable () a is_readable ().

<? php echo $ súbor. (is_readable ($ file)? "": "not"). "prečítať. <br>"; echo $ súbor. (is_writable ($ file)? "": "not"). „sa píše.“;

Tieto funkcie vracajú logickú hodnotu a vysvetľujú, či je možné so súborom vykonať operáciu.

Kód vytlačí na obrazovku nasledujúce hodnoty:

  • C: Windowsfile.ini sa číta.
  • C: Windowsfile.ini sa nepíše.

Pomocou ternárneho operátora môžete určiť, či je súbor k dispozícii alebo nie.

veľkosť súboru

Ak chcete zistiť veľkosť súboru, použite funkciu filesize (). Bude sa zobrazovať v bajtoch.

<? php $ file = "C: Windowsfile.ini"; $ size = veľkosť súboru ($ súbor); echo $ súbor. msgstr "má veľkosť". $ veľkosť. „byte.“;
Práca s php

Táto funkcia zobrazí nasledujúce:

  • C: Windowsfile.ini má veľkosť 510 bajtov.

Používanie súboru v systéme Windows tuzdôrazňuje jednu nuansu. Spätné lomítko má zvláštny význam ako úniková postava. Tomuto bude potrebné zabrániť pridaním ďalšieho spätného lomítka.

Ak súbor ešte nebol vytvorený, funkcia filesize () bude označovať hodnotu False a chybu. Preto sa najskôr skontroluje existencia požadovaného príkazu file_exists () v súbore.

<? php $ file = "C: Windowsfile.ini"; if (file_exists ($ file)) {$ size = filesize ($ file); echo $ súbor. msgstr "má veľkosť". $ veľkosť. "byte.";} else {echo $ súbor. " Súbor nenájdený.";}

Z bezpečnostných dôvodov by mala byť takmer vždy zahrnutá kontrola file_exists ().

Čítanie súborov

Predchádzajúca časť ukazuje, koľko toho môžetepred čítaním alebo zápisom do nich sa dozviete viac o súboroch, s ktorými pracujete. Teraz môžete analyzovať, ako sa číta obsah súboru.

Práca v php so súbormi INI

Úlohy uľahčujú funkcie pre prácu so súbormi PHP.V takom prípade potrebujete file_get_contents (). Načíta celý obsah súboru do premennej bez toho, aby ste museli otvárať alebo zatvárať samotný súbor. To je výhodné, keď je objem záznamu relatívne malý, pretože v PHP nie je vždy racionálne okamžite načítať 1 GB dát do archívu. Práca so súbormi „.ini“ a funkciou file_get_contents () je uvedená nižšie.

<? php $ file = "c: windowsfile.ini"; $ file1 = file_get_contents ($ súbor); echo $ file1;

Pre veľké súbory alebo len podľa tohopotreby vášho skriptu, môže byť múdrejšie podrobnosti spracovať sami. Je to tak preto, že po otvorení súboru môžete v ňom vyhľadať konkrétnu poznámku a prečítať ľubovoľné množstvo údajov. Funkcia fopen () sa používa na otvorenie súboru.

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ súbor, "r");

Funkcia fopen () vyžaduje dva argumenty:

  • súbor na otvorenie;
  • režim použitý v tomto prípade je „r“ na čítanie.

Funkcia vráti handle alebo stream do súboru, ktorý je uložený v premennej $ file1. Musí sa použiť vo všetkých nasledujúcich príkazoch pri práci so súborom.

Najčastejšie hodnoty režimu
Režim hodnota Pozícia kurzora Ak súbor neexistuje?
R iba čítanie začiatok súboru dá chybu
w iba nahrávanie začiatok súboru vytvorí nový
a iba nahrávanie koniec súboru vytvorí nový

Funkciu fgets () je možné použiť na čítanie z otvoreného súboru po jednom riadku.

<? php $ file = "c: windowsfile.ini"; $ file1 = fopen ($ súbor, "r"); urobte {echo fgets ($ file1). "<br>";} while (! feof ($ file1)); fclose ($ file1);

Používanie slučky do-while-loop je dobrémožnosť vopred vedieť, koľko riadkov je v súbore. Funkcia feof () kontroluje, či bol súbor dokončený, a cyklus pokračuje, kým sa nedosiahne koniec podmienky súboru. Po dokončení čítania sa na zatvorenie dokumentu použije funkcia fclose ().

Nahrávanie súborov

Dva bežne používané režimy pri zápise do súboru spomocou funkcie fwrite (): „w“ a „a“. „W“ znamená, že je potrebné do dokumentu zapísať, najskôr však vymaže akýkoľvek obsah, „a“ - pridá nové údaje k tým, ktoré už v súbore existujú. Určite použite správnu možnosť.

Práca so súbormi php a ini

Nasledujúci príklad použije na nahrávanie režim „a“.

<? php $ myFile = "files.txt"; $ file1 = fopen ($ myFile, "a"); $ output = "banán". PHP_EOL; fwrite ($ file1, $ output); $ output = "Čína". PHP_EOL; fwrite ($ file1, $ output); fclose ($ file1);

Najskôr je názov súboru priradený k premennej, potomotvára sa v režime „a“ na pridanie. Dáta, ktoré sa majú zapísať, sú priradené k premennej $ output a fwrite () a informácie sú pripojené k súboru. Postup sa opakuje, aby sa pridal ďalší riadok, potom sa dokument uzavrie pomocou funkcie fclose ().

Preddefinovaná konštanta PHP_EOL pridáva znak nového riadku špecifický pre platformu, na ktorej PHP pracuje s textovými súbormi.

Obsah súboru po vykonaní vyššie uvedeného kódu by mal vyzerať takto:

  • banán;
  • Čína.

Funkcia file_put_contents () môže tiežnapísať do súboru. Ak je potrebné pridať údaje, bude potrebný názov súboru, údaje, ktoré sa majú zapísať, a konštanta FILE_APPEND (prepíše sa tak predvolený obsah súboru).

Tu je rovnaký príklad ako vyššie, tentokrát však s použitím file_put_contents ().

<? php $ myFile = "files.txt"; file_put_contents ($ myFile, "banana". PHP_EOL); file_put_contents ($ myFile, "Čína". PHP_EOL, FILE_APPEND);

S týmito funkciami musíte často pracovať, takže je lepšie si ich zapamätať. Okrem toho môžu jedného dňa uľahčiť niektoré zložité úlohy pri práci so súbormi PHP.