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";
}
?>

 

A propos de l'auteur

Nicolas Galle

Nicolas Galle est développeur web sénior pour l'agence SEO Aseox.