Travailler avec le système de fichiers en Java : des bases aux techniques avancées
Travailler avec le système de fichiers est l'une des tâches fondamentales en programmation. Java offre aux développeurs des outils puissants et flexibles pour gérer les fichiers et les répertoires. Dans cet article, nous allons détailler comment travailler avec le système de fichiers en Java, en utilisant à la fois le package classique java.io et le moderne java.nio.file. Vous apprendrez à créer, lire, écrire des fichiers, gérer des répertoires et gérer les exceptions.
Bases du travail avec les fichiers en Java : la classe File
La classe java.io.File est la pierre angulaire du travail avec le système de fichiers en Java. Elle représente une abstraction du chemin vers un fichier ou un répertoire. Il est important de comprendre que File ne stocke pas le contenu du fichier, mais fournit uniquement des méthodes pour vérifier les propriétés et effectuer des opérations.
Examinons les opérations de base avec File :
import java.io.File;import java.io.IOException;
public class FileExample { public static void main(String[] args) { // Création d'un objet File File file = new File("example.txt"); File directory = new File("myDirectory");
// Vérification de l'existence System.out.println("Le fichier existe : " + file.exists()); System.out.println("Le dossier existe : " + directory.exists());
// Création d'un nouveau fichier try { if (file.createNewFile()) { System.out.println("Fichier créé : " + file.getName()); } else { System.out.println("Le fichier existe déjà"); } } catch (IOException e) { System.err.println("Erreur lors de la création du fichier : " + e.getMessage()); }
// Création d'un répertoire if (directory.mkdir()) { System.out.println("Dossier créé : " + directory.getName()); }
// Obtention d'informations sur le fichier System.out.println("Chemin absolu : " + file.getAbsolutePath()); System.out.println("Taille du fichier : " + file.length() + " octets"); System.out.println("Lisible : " + file.canRead()); System.out.println("Inscriptible : " + file.canWrite());
// Suppression du fichier if (file.delete()) { System.out.println("Fichier supprimé"); } }}La classe File permet également de travailler avec des listes de fichiers dans un répertoire :
File currentDir = new File(".");String[] contents = currentDir.list();for (String item : contents) { System.out.println(item);}Lecture et écriture de fichiers : flux d'entrée-sortie
Pour travailler directement avec le contenu des fichiers, Java utilise des flux d'entrée-sortie (I/O streams). Les classes principales pour travailler avec des fichiers texte sont FileReader/FileWriter et BufferedReader/BufferedWriter.
Lecture d'un fichier ligne par ligne
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;
public class ReadFileExample { public static void main(String[] args) { String fileName = "input.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("Erreur de lecture du fichier : " + e.getMessage()); } }}Notez la construction try-with-resources. Elle ferme automatiquement le flux, ce qui évite les fuites de ressources.
Écriture dans un fichier
import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;
public class WriteFileExample { public static void main(String[] args) { String fil