Lucrul cu fisiere

postat acum 2 ani de Stefanescu Mihai in categorie PHP

Sistemul de fisiere reprezinta o structura arborescenta, in nodurile caruia se pot afla fisiere sau directoare. Se poate face referinta la un fisier prin calea catr el. O cale reprezinta succesiunea nodurilor pana la o anumita destinatie, separate de un caracter specific. Sintaxa unei cai difera si ea in functie de sistemul de operare:

  • Windows – exemplu: C:\xampp\htdocs\scriptul_meu\index.php
  • Linux – exemplu: /var/www/scriptul_meu/index.php

Din cauza acestor diferente PHP ne pune la dispozitie 2 constante predefinite ce se modifica automat in functie de sistemulde operare:

  • DIRECTORY_SEPARATOR – are ca valoare separatorul intre componentele unei cai (in unix /, iar in windows \)
  • PATH_SEPARATOR – separatorul intre mai multe cai consecutive (in unix :, ;in windows)

Caile pot fi de 2 feluri.

  •  absolute – exemplu: C:\xampp\htdocs\scirpturile_mele\index.php sau in unix /var/www/scripturile_mele/index.php
  • relative – exemplu: ..\..\functii.php in windows si in unix ../../functii.php

In acest articol am sa va invat 4 operatii importante cu fisiere:

  • Deschiderea unui fisier
  • Citirea unui fisier
  • Scrierea unui fisier
  • Inchiderea unui fisier

Deschiderea si Inchiderea fisierelor

PHP ne pune la dispozitie functia fopen() pentru a deschide un fisier. Aceasta functie primeste 2 argumente, numele fisierului si modul in care sa fie deschis.Mai jos am postat un tabel cu modurile posibile in care poate fi deschis un fisier:

Mod Operatii Plasare Pointer Descriere
r  Citire Inceputul Fisierului Daca fisierul nu exista se genereaza un warning.
r+  Citire+Scriere Inceputul Fisierului Daca fisierul nu exista se genereaza un warning.
w  Scriere  Inceputul Fisierului  Daca fisierul exista, este golit. Daca nu exista, se incearca crearea lui.
w+  Citire+Scriere  Inceputul Fisierului  Daca fisierul exista, este golit. Daca nu exista, se incearca crearea lui.
a  Adaugare(Scriere)  Sfarsitul Fisierului  Daca fisierul nu exista se incearca crearea lui.
a+  Adaugare(Citire+Scriere)  Sfarsitul Fisierului  Daca fisierul nu exista se incearca crearea lui.
x  Creare+Scriere  Inceputul Fisierului  Daca fisierul exista, fopen returneaza false si genereaza warning.Daca fisierul nu exista, este creat si deschis pentru scriere.
x+  Creare, citire+scriere  Inceputul Fisierului  Daca fisierul exista, fopen returneaza false si genereaza warning.Daca fisierul nu exista, este creat si deschis pentru scriere.

Dupa ce au fost facute schimbari intr-un fisier este important sa-l inchide folosind functia fclose(). Aceasta functie necesita un pointer ca si argument si returneaza true daca fisierul a fost inchis cu succes, sau false daca nu a fost inchis cu success.

O data ce un fisier a fost deschis folosind functia fopen() putem folosi functia fread() pentru a-i citi continutul. Aceasta functie necesita 2 argumente, pointerul fisierului si marimea acestuia in bytes.Marimea fisierului poate fi aflata folosind functia filesize(), care are nevoie de un singur argument, mai exact are nevoie de numele fisierului si va return marimea acestuia in bytes.Iata pasi de deschidere a unui fisier:

  1. Deschide fisierul folosind functia fopen()Afla marimea folosind functia filesize()Citeste continutul folosind functia fread()Inchide-l folosind functia fclose()

In urmatorul exemplu salvam continutul unui fisier text intr-o variabila si il afisam pe pagina noastra web.

$fisier = "/home/user/guest/fisier.txt";
$file = fopen( $fisier, "r" );
if( $file == false ){
   echo ( "Nu pot deschide fisierul" );
   exit();
}
$marime = filesize($fisier);
$continut = fread($file, $marime);

fclose( $file );

echo ( "Marime fisier : $marime bytes" );
echo ( "<pre>$continut</pre>" );

Scrierea Fisierelor

Un nou fisier poate fi creat sau poate fi adaugat text intr-un fisier folosind functia fwrite(). Aceasta functie primeste 2 argumente ce specifica fisierul si textul de adaugat.Optinal, putem pune si un al treilea argument ce specifica marimea fisierul. Daca este inclus si un al treilea argument scrierea se opreste cand se ajunge la marimea specificata.

Urmatorul exemplu creaza un nou fisier text si adauga un text in el. Dupa inchidere lui se va confirma existenta acestuia cu ajutorul functiei file_exist().

$fisier = "/home/user/guest/fisier_nou.txt";
$file = fopen( $fisier, "r" );
if( $file == false ){
   echo ( "Nu pot deschide fisierul" );
   exit();
}
fwrite( $file, "Un simplu text\n" );
fclose( $file );


if( file_exist( $fisier ) ){
   $filesize = filesize( $fisier );
   $msg = "Fisierul are numele: $fisier ";
   $msg .= "si are marimea de $filesize bytes";
   echo ($msg );
}else{
   echo ("Fisierul $fisier nu exista" );
}

 

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!