Traitement des fichiers et répertoires
Fonctions PHP de manipulation de fichiers
Les fichiers sont des éléments sur lesquels travaille l'application. Ils peuvent servir de stockage définitif de données simples à la place de la base de données, mais aussi de stockage de données temporaires.
C'est pourquoi ils méritent une attention particulière. Nous aborderons alors une notion un peu plus avancée sur la gestion, l'utilisation et la manipulation des fichiers.
Tester l'existence d'un fichier : file_exist
Une tentative de manipulation sur un fichier non existant est interprétée comme étant une erreur. C'est pourquoi avant toute manipulation d'un fichier il est toujours nécessaire de vérifier son existence.
La fonction file_exist renvoie true si le fichier existe et false dans le cas contraire. On l'utilise souvent dans une structure alternative comme suit :
<?php if(file_exists("fichier.txt")); { echo "Le fichier fichier.txt existe"; }else { echo "Le fichier n'existe pas"; } ?>
Création et effacement : fonctions fopen, fclose, touch et unlink
Si le fichier n'existe pas, il faut alors le créer. Pour cela, il existe deux méthodes. La première consiste à ouvrir le fichier en écriture avec la fonction fopen() et le fermer après. Rappelons que fclose() est la fonction utilisée pour la fermeture d'un fichier.
Si le fichier passé en argument n'existe pas encore il le crée automatiquement.
Exemple
<?php $fp = fopen("fichier.txt", 'w'); //ouverture fclose($fp); //fermeture ?>
Si non, il existe aussi une autre méthode en PHP qui requiert l'utilisation de la fonction touch().Elle permet de créer le fichier s'il n'existe pas ou de mettre à jour ses dates d'accès et de modification dans le cas contraire.
Exemple
<?php if(!file_exists("fichier.txt")); touch("fichier.txt"); ?>
A l'inverse, la fonction unlink() supprime directement le fichier.
<?php if(!file_exists("fichier.txt")); unlink("fichier.txt"); ?>
Copie et déplacement de fichiers : copy et rename
La fonction utilisée pour le déplacement d'un fichier est rename(). Celle qui est utilisé pour la copie est copy().
Les deux fonctions fonctionnent de la même manière et ont chacune deux arguments : en premier l'adresse source et en second l'adresse de destination.
Les syntaxes sont donc les suivantes :
copy("source", "destination"); rename("dorigine","renome") ;
Informations sur le fichier avec PHP
PHP met à notre disposition diverses informations sur le fichier qui peuvent nous être utilise pour manipuler en toute sérénité notre fichier. Il y a juste à faire appel à la fonction correspondante.
Emplacement d'une fichier : realpath
L'emplacement d'un fichier est par défaut relative au répertoire en cours. C'est à dire que si' l'on n'indique pas une adresse absolue (du style /rep/fichier.txt) au moment de l'ouverture, le programme recherche le fichier en question dans le répertoire courant.
Lorsqu'il s'agit d'un fichier distant, on accède de la même façon qu'un fichier locale. Seulement, il faut préfixer l'adresse d'un " ftp :// " ou d'un " http:// ".
On peut connaitre le chemin réel, notamment le nom et l'adresse d'un fichier à l'aide de la fonction realpath().
-La taille d'un fichier
La fonction filesize () renvoie la taille du fichier quand on passe en argument le nom de celui-ci.
<?php $fichier = "fichier.txt"; if(file_exists($fichier)) { echo "La taille de ".$fichier." est de : ".filesize($fichier); } else { echo "Le fichier n'existe pas"; } ?>
Dates du fichier filectime et filemtime
La connaissance de la date dans lors de la manipulation de fichier permet de suivre son évolution. La fonction filectime() nous donne la date de création du fichier et la fonction filemtime() nous permet de savoir la date de sa dernière modification.
Exemple
<?php $fichier = "fichier.txt"; if(file_exists($fichier)) { if(filemtime($fichier)<filectime($fichier)) { echo "Pas de modif depuis la création"; } else { echo "Le fichier a été modifié depuis la création"; } } else { echo "Le fichier n'existe pas"; } ?>