Aller au contenu
Framework côté serveur

Fichiers

Fichiers

Lecture des fichiers

PHP offre plusieurs méthodes pour lire le contenu des fichiers.

Ouvrir un fichier

Pour lire un fichier, nous devons d'abord l'ouvrir en utilisant la fonction fopen(). Cette fonction prend deux paramètres : le chemin du fichier et le mode d'ouverture. Par exemple, pour ouvrir un fichier en mode lecture ('r'), nous utilisons :

$file = fopen('file.txt', 'r');

Lecture ligne par ligne

Une fois le fichier ouvert, nous pouvons lire son contenu ligne par ligne en utilisant la fonction fgets(). Cette fonction retourne la ligne courante pointée par le pointeur de fichier, puis déplace le pointeur à la ligne suivante.

while(!feof($file)) {
    $line = fgets($file);
    echo $line . "<br>";
}

Lecture intégrale

Si nous voulons lire tout le contenu d'un fichier en une seule fois, nous pouvons utiliser la fonction file_get_contents(). Cette fonction retourne tout le contenu du fichier sous forme de chaîne.

$content = file_get_contents('file.txt');
echo $content;

Fermeture du fichier

Après avoir terminé la lecture du fichier, il est important de le fermer en utilisant la fonction fclose(). Cette fonction libère la ressource associée au fichier ouvert.

fclose($file);

Écriture et modification des fichiers

PHP fournit également plusieurs méthodes pour écrire ou modifier le contenu d'un fichier.

Écriture dans un fichier

Pour écrire dans un fichier, nous devons d'abord l'ouvrir en mode écriture ('w') ou ajout ('a') en utilisant la fonction fopen(). Ensuite, nous utilisons la fonction fwrite() pour écrire dans le fichier.

$file = fopen('file.txt', 'w');
fwrite($file, "Contenu à écrire");
fclose($file);

Ajout de contenu à un fichier existant

Pour ajouter du contenu à un fichier existant sans écraser le contenu précédent, nous ouvrons le fichier en mode ajout ('a').

$file = fopen('file.txt', 'a');
fwrite($file, "\nContenu supplémentaire");
fclose($file);

Modification du contenu d'un fichier

Pour modifier le contenu d'un fichier, nous devons déplacer le pointeur de fichier à la position souhaitée en utilisant la fonction fseek(), puis écrire le nouveau contenu avec fwrite().

$file = fopen('file.txt', 'r+');
fseek($file, 5);
fwrite($file, "nouveau contenu");
fclose($file);

Suppression du contenu d'un fichier

Pour supprimer tout le contenu d'un fichier, nous ouvrons le fichier en mode écriture ('w'), ce qui écrase automatiquement tout le contenu précédent.

$file = fopen('file.txt', 'w');
fclose($file);

Vérification de l'existence des fichiers

Avant d'ouvrir ou de manipuler un fichier, il est souvent nécessaire de vérifier si le fichier existe. PHP offre plusieurs fonctions pour cela.

Vérification de l'existence d'un fichier

La fonction file_exists() permet de vérifier si un fichier ou un répertoire existe. Elle retourne true si le fichier ou le répertoire existe, et false sinon.

if(file_exists('file.txt')) {
    echo "Le fichier existe";
} else {
    echo "Le fichier n'existe pas";
}

La fonction is_file() vérifie si le chemin donné correspond à un fichier régulier (et non à un répertoire). Elle retourne true si le chemin correspond à un fichier, et false sinon.

if(is_file('file.txt')) {
    echo "C'est un fichier";
} else {
    echo "Ce n'est pas un fichier";
}

Gestion des erreurs

Lors de la manipulation de fichiers en PHP, diverses erreurs peuvent survenir. Il est important de savoir comment les gérer.

Gestion des erreurs de fichier

PHP offre plusieurs fonctions pour gérer les erreurs lors de l'ouverture, de la lecture ou de l'écriture de fichiers. Par exemple, la fonction feof() permet de vérifier si le pointeur de fichier est à la fin du fichier, et la fonction ferror() permet de vérifier si une erreur est survenue lors de la lecture du fichier.

$file = @fopen('file.txt', 'r');

if(!$file) {
    echo "Erreur lors de l'ouverture du fichier";
} else {
    while(!feof($file)) {
        $line = fgets($file);
        if(ferror($file)) {
            echo "Erreur lors de la lecture du fichier";
            break;
        }
        echo $line;
    }
    fclose($file);
}

Utilisation des exceptions pour la gestion des erreurs

PHP offre également un mécanisme d'exception pour gérer les erreurs de manière plus structurée. Vous pouvez utiliser les blocs try, catch et finally pour capturer et gérer les exceptions.

try {
    $file = fopen('file.txt', 'r');
    if(!$file) {
        throw new Exception("Erreur lors de l'ouverture du fichier");
    }
    // Lecture du fichier...
} catch (Exception $e) {
    echo $e->getMessage();
} finally {
    if($file) {
        fclose($file);
    }
}

Fichiers en mode binaire

PHP permet également de lire et d'écrire des fichiers en mode binaire, ce qui est particulièrement utile pour manipuler des données non textuelles, comme des images ou des fichiers audio.

Lecture de fichiers binaires

Pour lire un fichier en mode binaire, nous ouvrons le fichier en mode binaire de lecture ('rb') et utilisons la fonction fread(). Cette fonction lit une quantité spécifiée d'octets à partir du fichier.

$file = fopen('image.jpg', 'rb');
$content = fread($file, filesize('image.jpg'));
fclose($file);

Écriture de fichiers binaires

Pour écrire des données binaires dans un fichier, nous ouvrons le fichier en mode binaire d'écriture ('wb') et utilisons la fonction fwrite().

$file = fopen('image_copy.jpg', 'wb');
fwrite($file, $content);
fclose($file);

Exercices

Exercices complémentaires

Journal de bord

Dans cet exercice, vous allez créer un journal de bord simple. Chaque fois que votre script PHP est exécuté, il doit ajouter une nouvelle entrée à un fichier journal. Chaque entrée doit contenir la date et l'heure actuelles, ainsi qu'un message de votre choix.

Pour cet exercice, vous devrez utiliser les fonctions fopen(), fwrite(), et fclose() pour manipuler le fichier journal. Vous devrez également utiliser la fonction date() pour obtenir la date et l'heure actuelles.

Gestionnaire de tâches

Dans cet exercice, vous allez créer un gestionnaire de tâches simple. Le gestionnaire de tâches doit permettre à l'utilisateur d'ajouter des tâches à une liste, de marquer des tâches comme terminées et de voir toutes les tâches non terminées. La liste des tâches doit être stockée dans un fichier.

Pour cet exercice, vous devrez utiliser les fonctions fopen(), fwrite(), fgets(), et fclose() pour lire et écrire dans le fichier de la liste de tâches. Vous devrez aussi gérer l'entrée de l'utilisateur pour ajouter des tâches et marquer les tâches comme terminées.

Copie de fichiers binaires

Dans cet exercice, vous allez écrire un script PHP qui copie un fichier image de votre choix et le sauvegarde sous un nouveau nom. Vous devrez vous assurer d'ouvrir les fichiers en mode binaire pour lire et écrire les données.

Pour cet exercice, vous devrez utiliser les fonctions fopen(), fread(), fwrite(), et fclose() pour lire le fichier image source, créer le fichier image de destination, et écrire les données de l'image source dans le fichier de destination. Vous devrez également utiliser la fonction filesize() pour déterminer combien d'octets lire du fichier source.