Vous êtes sur la page 1sur 23

PHP : Gestion des Fichiers

M. BOUMEDIENE

Institut National des Télécommunications et des Technologies


de l’Information et de la Communication
e-mail: mboumediene[at]inttic.dz

xx 2021

1/23 Mohammed Boumediene - INTTIC Technologies web 2


Plan

1 Lecture/Écriture rapide de fichiers

2 Ouverture d’un fichier

3 Manipuler les fichiers

4 Manipuler les répertoires

2/23 Mohammed Boumediene - INTTIC Technologies web 2


Lecture/Écriture rapide de fichiers

Plan

1 Lecture/Écriture rapide de fichiers

2 Ouverture d’un fichier

3 Manipuler les fichiers

4 Manipuler les répertoires

3/23 Mohammed Boumediene - INTTIC Technologies web 2


Lecture/Écriture rapide de fichiers

Lecture rapide
Les applications web peuvent avoir besoin d’accéder aux fichiers. Que ce soit pour
sauvegarder un contenu, le lire ou le supprimer.
La fonction file_get_contents lit un fichier et retourne son contenu dans une
chaîne de caractères
En cas d’erreur, file_get_contents retourne false
Exemple du fichier "myFile.txt" qui contient la chaîne de caractère "Hello World".
Le script suivant affiche le contenu de "myFile.txt"

$myFile = file_get_contents ( ' myFile . t x t ' ) ;


echo $ m y F i l e ;

La fonction file lit le contenu d’un fichier et le retourne dans un tableau (array)
Chaque élément du tableau correspond à une ligne du fichier
En cas d’erreur, file retourne false

$ l i n e s = f i l e ( ' myFile . txt ' ) ;


f o r e a c h ( $ l i n e s a s $ l i n e _ n u m => $ l i n e ) {
echo " L i n e $ l i n e _ n u m : $ l i n e <br >";
}

4/23 Mohammed Boumediene - INTTIC Technologies web 2


Lecture/Écriture rapide de fichiers

Écriture rapide
La fonction file_put_contents écrit des données dans un fichier
Les données peuvent être de type chaîne de caractères, tableau, ou ressource
file_put_contents retourne le nombre d’octets écrits
En cas d’erreur, file_put_contents retourne false
A l’aide d’un paramètre flags, il est possible de définir le contexte d’écriture :
FILE_APPEND : ajouter les données à la fin du fichier et ne pas
écraser
LOCK_EX : Appliquer un verrou exclusif sur le fichier durant
l’écriture. Dans ce cas, le fichier ne peut être lu par d’autre processus
Le script suivant écrase le contenu de "myFile.txt". Le contenu sera ", how are you
?"

f i l e _ p u t _ c o n t e n t s ( ' m y F i l e . t x t ' , ' , how a r e you ? ' ) ;

Le script suivant ajoute ", how are you ? " à la fin du fichier. Le contenu sera
"Hello World, how are you ?"

f i l e _ p u t _ c o n t e n t s ( ' m y F i l e . t x t ' , ' , how a r e you ? ' ,


,→ FILE_APPEND ) ;
5/23 Mohammed Boumediene - INTTIC Technologies web 2
Ouverture d’un fichier

Plan

1 Lecture/Écriture rapide de fichiers

2 Ouverture d’un fichier

3 Manipuler les fichiers

4 Manipuler les répertoires

6/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

La fonction fopen
La fonction fopen crée une ressource représentant un pointeur de fichier
Plusieurs modes d’ouverture sont possible pour fopen
Mode Description
’r’ lecture seule, et le pointeur de fichier sera placé au début du fichier.
’r+’ lecture et écriture, et le pointeur de fichier sera placé au début du fichier.
’w’ écriture seule, et le pointeur de fichier sera placé au début du fichier et réduit
la taille du fichier à 0. Si le fichier n’existe pas, il sera crée.
’w+’ lecture et écriture, et le pointeur de fichier sera placé au début du fichier et
réduit la taille du fichier à 0. Si le fichier n’existe pas, il sera crée.
’a’ écriture seule, et le pointeur de fichier sera placé à la fin du fichier. Si le fichier
n’existe pas, il sera crée.
’a+’ lecture et écriture, et le pointeur de fichier sera placé à la fin du fichier. Si le
fichier n’existe pas, il sera crée.
’x’ crée et ouvre le fichier en écriture seulement. Si le fichier existe, fopen retourne
false.
’x+’ crée et ouvre le fichier en lecture et écriture. Si le fichier existe, fopen retourne
false.

$ m y F i l e 2 = f o p e n ( " . / m y F i l e 2 . t x t " , ' a+' ) ;


7/23 Mohammed Boumediene - INTTIC Technologies web 2
Ouverture d’un fichier

Lecture caractère par caractère

La fonction fgetc lit un caractère du fichier et le retourne en une chaine de


caractères (qui contient un seul caractère).
Après chaque lecture, la position du pointeur de lecture est avancée d’un pas.
En cas d’erreur, fgetc retourne false
Arrivé à la fin du fichier, fgetc retourne aussi false.
L’exemple suivant affiche tous les caractères du fichier "myFile.txt" à l’aide d’une
boucle while. Dés qu’il n’y a plus aucun caractère à lire, fgetc retourne false et la
condition de la boucle while ne sera plus vérifiée.

$myFile = fopen ( ' myFile . t x t ' , ' r ' ) ;


i f ( ! $myFile ) {
echo ' I m p o s s i b l e t o open m y F i l e . t x t ' ;
}
w h i l e ( ( $ c h a r = f g e t c ( $ m y F i l e ) ) !== f a l s e ) {
echo " $ c h a r " ;
}

8/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

Lecture ligne par ligne

La fonction fgets lit la ligne courante (selon la position du pointeur du fichier) et


la retourne dans une chaîne de caractères.
En cas d’erreur, fgets retourne false
Arrivé à la fin du fichier, fgets retourne aussi false.
L’exemple suivant affiche toutes les lignes du fichier "myFile.txt" à l’aide d’une
boucle while. Dés qu’il n’y a plus aucune ligne à lire, fgets retourne false et la
condition de la boucle while ne sera plus vérifiée.

$myFile2 = fopen ( ' myFile2 . t x t ' , ' r ' ) ;


i f ( ! $myFile2 ) {
echo ' I m p o s s i b l e t o open m y F i l e 2 . t x t ' ;
}
w h i l e ( ( $ l i n e = f g e t s ( $ m y F i l e 2 ) ) !== f a l s e ) {
echo " $ l i n e <br >";
}

9/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

Lecture ligne par ligne (la suite)


Il est possible de préciser le nombre d’octets à lire. Dans ce cas, à la sortie de la
boucle while, il faut vérifier si la fin du fichier a été atteinte EOF.
La fonction feof permet d’effectuer cette vérification.
Après les opérations de lecture/écriture, il ne faut pas oublier de fermer le fichier à
l’aide de fclose.

$myFile2 = fopen ( ' myFile2 . t x t ' , ' r ' ) ;


i f ( ! $myFile2 ) {
echo ' I m p o s s i b l e t o open m y F i l e 2 . t x t ' ;
} else {
w h i l e ( ( $ l i n e = f g e t s ( $ m y F i l e 2 , 4 0 9 6 ) ) !== f a l s e ) {
echo " $ l i n e <br >";
}
i f ( ! f e o f ( $myFile2 ) ) {
echo " E r r o r : f g e t s f a i l e d " ;
}
f c l o s e ( $myFile2 ) ;
}

10/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

Lecture avec fread()

La fonction fread lit un nombre d’octets passé en argument et retourne une chaîne
de caractères.
En cas d’erreur, fread retourne false

echo "<h2>f r e a d : </ h2 >";


$myFile2 = fopen ( ' myFile2 . t x t ' , ' rb ' ) ;
i f ( ! $myFile2 ) {
echo ' I m p o s s i b l e t o open m y F i l e 2 . t x t ' ;
} else {
$content = f r e a d ( $myFile2 , f i l e s i z e ( ' myFile2 . t x t ' ) ) ;
echo n l 2 b r ( $ c o n t e n t ) ;
f c l o s e ( $myFile2 ) ;
}

11/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

Écriture avec fwrite()

La fonction fwrite écrit le contenu d’une chaîne de caractères dans un fichier.


fwrite retourne le nombre d’octets écrits.
En cas d’erreur, fwrite retourne false
Le script suivant ouvre le fichier "myFile2.txt" en mode ’a+’ et ajoute à la fin du
fichier la chaîne "I enjoyed learning PHP. ". Ainsi que la chaîne "After the basics,
now I’m learning advanced features".

$myFile2 = fopen ( ' myFile2 . t x t ' , ' a ' ) ;


i f ( ! $myFile2 ) {
echo ' I m p o s s i b l e t o open m y F i l e 2 . t x t ' ;
} else {
f w r i t e ( $ m y F i l e 2 , "\ n I e n j o y e d l e a n i n g PHP . " ) ;
f w r i t e ( $ m y F i l e 2 , " A f t e r t h e b a s i c s , now I 'm l e a r n i n g
,→ a d v a n c e d f e a t u r e s " ) ;
f c l o s e ( $myFile2 ) ;
}

12/23 Mohammed Boumediene - INTTIC Technologies web 2


Ouverture d’un fichier

Comment positionner le pointeur du fichier ?


La fonction rewind replace le pointeur de fichier au début.
La valeur true/false est retournée en cas de succès/échec.
Le script suivant ouvre le fichier "myFile3.txt" (que vous devez créer avec bloc note
par exemple) en mode ’r+’ et ajoute au début la chaîne "I enjoyed learning PHP.
Par la suite, le pointeur est repositionné de nouveau au début du fichier à l’aide
rewind pour y ajouter la chaîne "After the basics, now I’m learning advanced
features".
Au final, le pointeur est repositionné de nouveau au début afin d’effectuer la
lecture du contenu.
$ m y F i l e 3 = f o p e n ( ' m y F i l e 3 . t x t ' , ' r+' ) ;
i f ( ! $myFile3 ) {
echo ' I m p o s s i b l e t o open m y F i l e 3 . t x t ' ;
} else {
f w r i t e ( $ m y F i l e 3 , "\ n I e n j o y e d l e a n i n g PHP . " ) ;
rewind ( $myFile3 ) ;
f w r i t e ( $ m y F i l e 3 , " A f t e r t h e b a s i c s , now I 'm l e a r n i n g
,→ a d v a n c e d f e a t u r e s " ) ;
rewind ( $myFile3 ) ;
echo f r e a d ( $ m y F i l e 3 , f i l e s i z e ( ' m y F i l e 3 . t x t ' ) ) ;
f c l o s e ( $myFile3 ) ;
}
13/23 Mohammed Boumediene - INTTIC Technologies web 2
Ouverture d’un fichier

Comment positionner le pointeur du fichier ? (la suite)


La fonction fseek modifie la position du pointeur du fichier.
La nouvelle position est calculée en fonction de l’offset donné en argument ainsi
que du repère (whence).
Le repère (whence) peut prendre l’une des valeus suivante :
1 SEEK_SET : la position finale sera offset octets,
2 SEEK_CUR : la position finale sera l’offset ajouté à la position
courante,
3 SEEK_END : la position finale sera l’offset ajouté à la dernière
position du fichier (EOF). Pour atteindre une position avant EOF, il
faut définir un offset négatif.
La fonction fseek retourne 0 en cas de succès, sinon retourne -1,
$ m y F i l e 3 = f o p e n ( ' m y F i l e 3 . t x t ' , ' r+' ) ;
i f ( ! $myFile3 ) {
echo ' I m p o s s i b l e t o open m y F i l e 3 . t x t ' ;
} else {
f w r i t e ( $ m y F i l e 3 , " A f t e r t h e b a s i c s , now I 'm l e a r n i n g
,→ a d v a n c e d f e a t u r e s " ) ;
f s e e k ( $ m y F i l e 3 , 0 ) ; // same a s r e w i n d ( $ m y F i l e 3 ) ;
echo f r e a d ( $ m y F i l e 3 , f i l e s i z e ( ' m y F i l e 3 . t x t ' ) ) ;
f c l o s e ( $myFile3 ) ;
}
14/23 Mohammed Boumediene - INTTIC Technologies web 2
Manipuler les fichiers

Plan

1 Lecture/Écriture rapide de fichiers

2 Ouverture d’un fichier

3 Manipuler les fichiers

4 Manipuler les répertoires

15/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les fichiers

Copier un fichier

La fonction copy effectue une copie d’un fichier source vers un fichier de
destination.
Si le fichier de destination existe, il sera remplacé.
La fonction copy retourne true/false en cas de succès/échec.
Le script suivant copie le contenu du fichier "myFile3.txt" dans "myFile4.txt".
$ F i l e = ' myFile3 . t x t ' ;
$newFile = ' myFile4 . t x t ' ;
i f ( copy ( $ F i l e , $ n e w F i l e ) ) {
echo " copy o f $ F i l e i s done " ;
} else {
echo " F a i l e d t o copy $ F i l e " ;
}

16/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les fichiers

Renommer un fichier

La fonction rename renomme un fichier ou un répertoire.


La fonction rename retourne true/false en cas de succès/échec.
Le script suivant renomme le fichier "myFile4.txt" en "myFile5.txt".
$Name = ' m y F i l e 4 . t x t ' ;
$newName = ' m y F i l e 5 1 . t x t ' ;
i f ( rename ( $Name , $newName ) ) {
echo " rename o f $Name i s done " ;
} else {
echo " F a i l e d t o rename $Name " ;
}

17/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les fichiers

Supprimer un fichier

La fonction unlink supprime un fichier.


La fonction unlink retourne true/false en cas de succès/échec.
Le script suivant supprime le fichier "myFile5.txt".
$ F i l e = ' myFile5 . t x t ' ;
i f ( unlink ( $File ) ) {
echo " $ F i l e i s d e l e c t e d " ;
} else {
echo " F a i l e d t o d e l e t e $ F i l e " ;
}

18/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les répertoires

Plan

1 Lecture/Écriture rapide de fichiers

2 Ouverture d’un fichier

3 Manipuler les fichiers

4 Manipuler les répertoires

19/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les répertoires

Créer/supprimer un répertoire
La fonction mkdir crée un répertoire et retourne true/false en cas de
succès/échec.
Le script suivant crée un répertoire "test" dans le répertoire courant. Avant la
création, la fonction is_dir est utilisée afin de vérifier si le répertoire "test" existe
déjà ou pas.
i f ( i s _ d i r (" t e s t ") ){
echo " t h e d i r e c t o r y e x i s t s " ;
} else {
i f ( mkdir ( " t e s t " ) )
echo " t h e d i r e c t o r y t e s t i s c r e a t e d " ;
else
echo " f a i l e d t o c r e a t e t h e d i r e c t o r y " ;
}

La fonction rmdir supprime un répertoire et retourne true/false en cas de


succès/échec.
Le script suivant supprime le répertoire "test".
i f ( rmdir (" t e s t ") )
echo " t h e d i r e c t o r y t e s t i s d e l e t e d " ;
else
echo " f a i l e d t o d e l e t e t h e d i r e c t o r y " ;
20/23 Mohammed Boumediene - INTTIC Technologies web 2
Manipuler les répertoires

Parcourir un répertoire
La fonction opendir ouvre un répertoire et retourne un pointeur dessus.
La fonction opendir retourne true/false en cas de succès/échec.
Pour parcourir le contenu du répertoire, la fonction readdir retourne le nom de la
prochaine entrée du répertoire.
La fonction closedire ferme le pointeur du répertoire qui été ouvert avec opendir.
Le script suivant liste le contenu du répertoire courant c.-a.-d. le répertoire où se
situe le script lui même.
En PHP, la constante magique __DIR__ retourne le répertoire courant.
La fonction getcwd permet aussi de récupérer le répertoire courant.
i f ( $ h a n d l e = o p e n d i r (__DIR__) ) {
echo " D i r e c t o r y h a n d l e : : $ h a n d l e \n " ;
echo " E n t r i e s : \ n " ;

w h i l e ( f a l s e !== ( $ e n t r y = r e a d d i r ( $ h a n d l e ) ) ) {
echo " $ e n t r y <br >";
}

c l o s e d i r ( $handle ) ;
}

21/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les répertoires

Filtrer un répertoire

La fonction glob retourne un tableau des fichiers et répertoires correspondant au


masque passé en argument.
Un tableau vide est retourné s’il n’y a aucune correspondance avec le masque.
Sinon false est retournée en cas d’erreur.
Le script suivant affiche les fichiers contenus dans le répertoire courant et dont
l’extension est ".php".
f o r e a c h ( g l o b ( " ∗ . php " ) a s $ f i l e n a m e ) {
echo " $ f i l e n a m e <br >";
}

22/23 Mohammed Boumediene - INTTIC Technologies web 2


Manipuler les répertoires

Merci pour votre attention! Des Questions?

23/23 Mohammed Boumediene - INTTIC Technologies web 2

Vous aimerez peut-être aussi