Travailler avec le système de fichiers en Kotlin : en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction



Travailler avec le système de fichiers est l'une des tâches fondamentales dans tout langage de programmation. En Kotlin, grâce à sa syntaxe concise et aux puissantes extensions de la bibliothèque standard Java, effectuer des opérations sur les fichiers et répertoires devient simple et intuitif.



Dans cet article, nous allons aborder en pratique les opérations de base : création, lecture, écriture, copie, déplacement et suppression de fichiers et dossiers. Tous les exemples sont écrits en Kotlin et prêts à être utilisés dans vos projets. Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant rafraîchir leurs connaissances ou trouver des solutions optimales pour les tâches quotidiennes.



Classes principales et imports



Pour travailler avec le système de fichiers en Kotlin, on utilise les classes des packages java.io (par exemple, File) et java.nio.file (par exemple, Path, Files). Les recommandations modernes privilégient java.nio.file, car cette API est plus performante et plus pratique.



Pour tous les exemples, nous aurons besoin des imports suivants :



import java.io.Fileimport java.nio.file.Pathimport java.nio.file.Pathsimport java.nio.file.Filesimport java.nio.file.StandardCopyOptionimport java.nio.file.StandardOpenOption


Création d'un fichier et d'un répertoire



Commençons par le plus simple : la création d'un nouveau fichier et d'un dossier.



// Création d'un répertoireval dir = File("my_directory")if (!dir.exists()) {    dir.mkdirs() // mkdirs() crée tous les répertoires parents manquants    println("Répertoire créé : ${dir.absolutePath}")}

// Création d'un fichierval file = File(dir, "example.txt")if (!file.exists()) { file.createNewFile() println("Fichier créé : ${file.absolutePath}")}


Remarque : mkdirs() crée toute la chaîne de répertoires si elle n'existe pas. mkdir() ne crée que le dernier répertoire et retourne false si le dossier parent est absent.



Lecture et écriture de fichiers



Ce sont les opérations les plus courantes. Kotlin propose plusieurs méthodes élégantes pour travailler avec le contenu des fichiers.



Écriture dans un fichier



val path = Paths.get("my_directory/write_example.txt")

// Chaîne à écrireval content = "Bonjour le monde ! Cette ligne est écrite dans le fichier.Deuxième ligne."

// Écriture simple d'une chaîne (écrase le fichier)Files.writeString(path, content)

// Écriture d'une liste de lignesval lines = listOf("Ligne 1", "Ligne 2", "Ligne 3")Files.write(path, lines)

// Ajout à la fin du fichierval additionalContent = "Ligne supplémentaire."Files.writeString(path, additionalContent, StandardOpenOption.APPEND)


La méthode Files.writeString() est apparue dans Java 11 et est disponible en Kotlin/JVM. Si vous avez besoin de prendre en charge des versions plus anciennes, utilisez Files.write() en spécifiant l'encodage.



Lecture d'un fichier



val path = Paths.get("my_directory/write_example.txt")

// Lecture de tout le contenu dans une chaîneval fullContent = Files.readString(path)println("Contenu du fichier :$fullContent")

// Lecture dans une liste de lignesval allLines: List<String> = Files.readAllLines(path)allLines.forEachIndexed { index, line -> println("Ligne ${index + 1} : $line")}

// Lecture avec Stream (pour les gros fichiers)Files.lines(path).use { stream -> stream.forEach { line -> println("Traitement de la ligne : $line") }}


La construction .use { ... } garantit la fermeture du flux après le traitement, ce qui est particulièrement important pour les gros fichiers.



Copie, déplacement et renommage



Ces opérations sont également réalisées via java.nio.file.Files.



Copie d'un fichier



val source = Paths.get("my_directory/example.txt")val destination = Paths.get("my_directory/backup/example_copy.txt")

Blogs

Book Recommendations