Travail avec le système de fichiers en Java : en pratique
\n\nDans le développement moderne en Java, le travail avec le système de fichiers est l'une des tâches fondamentales. Qu'il s'agisse de sauvegarder des configurations, de traiter des journaux ou de charger des données utilisateur, la capacité à interagir correctement avec les fichiers et les répertoires est essentielle pour tout développeur. Dans cet article, nous aborderons les aspects pratiques du travail avec le système de fichiers en Java, en utilisant à la fois l'approche classique (classe File) et l'API moderne NIO.2 (Path, Files).
Le contenu est destiné aux praticiens : vous obtiendrez des exemples de code prêts à l'emploi que vous pourrez immédiatement utiliser dans vos projets. Nous examinerons la création, la lecture, l'écriture, la copie et la suppression de fichiers, ainsi que le travail avec les répertoires.
\n\nApproche classique : la classe File
\n\nAvant l'arrivée de Java 7, le principal outil pour travailler avec le système de fichiers était la classe java.io.File. Bien qu'elle soit considérée comme obsolète, on peut encore la rencontrer dans des projets legacy. Examinons les opérations de base.
Création d'un fichier :
\nimport java.io.File;\nimport java.io.IOException;\n\npublic class FileExample {\n public static void main(String[] args) {\n File file = new File("example.txt");\n try {\n if (file.createNewFile()) {\n System.out.println("Fichier créé : " + file.getName());\n } else {\n System.out.println("Le fichier existe déjà.");\n }\n } catch (IOException e) {\n System.out.println("Erreur lors de la création du fichier : " + e.getMessage());\n }\n }\n}\n\nVérification de l'existence et des propriétés d'un fichier :
\nFile file = new File("example.txt");\nif (file.exists()) {\n System.out.println("Le fichier existe");\n System.out.println("Chemin absolu : " + file.getAbsolutePath());\n System.out.println("Taille : " + file.length() + " octets");\n System.out.println("Lisible : " + file.canRead());\n System.out.println("Inscriptible : " + file.canWrite());\n}\n\n- \n
exists()— vérifie si le fichier ou le répertoire existe. \n isFile()— vérifie si l'objet est un fichier. \n isDirectory()— vérifie si l'objet est un répertoire. \n length()— retourne la taille du fichier en octets. \n delete()— supprime le fichier ou le répertoire vide. \n
L'inconvénient de la classe File est l'absence de prise en charge des liens symboliques, des métadonnées et une gestion limitée des exceptions. Pour les nouveaux projets, il est recommandé d'utiliser NIO.2.
Approche moderne : NIO.2 (Path et Files)
\n\nÀ partir de Java 7, le JDK a inclus le package java.nio.file, offrant une API plus flexible et plus performante. Les classes principales sont : Path (représente le chemin vers un fichier ou un répertoire) et Files (contient des méthodes statiques pour les opérations).
Création d'un fichier avec Files :
\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.io.IOException;\n\npublic class NioExample {\n public static void main(String[] args) {\n Path path = Paths.get("nio_example.txt");\n try {\n Files.createFile(path);\n System.out.println("Fichier créé : " + path.toAbsolutePath());\n } catch (IOException e) {\n System.out.println("Erreur : " + e.getMessage());\n }\n }\n}\n\nCréation de répertoires :
\nPath dirPath = Paths.get("myDir/subDir");\ntry {\n Files.createDirectories(dirPath); // crée tous les répertoires parents manquants\n System.out.println("Répertoire créé : " + dirPath);\n} catch (IOException e) {\n e.printStackTrace();\n}\n\nLecture et écriture de fichiers :
\nLa façon la plus simple de lire