Introduction au travail avec le système de fichiers en Kotlin
Le travail avec le système de fichiers est l'une des tâches fondamentales lors du développement d'applications en Kotlin. Que ce soit une application console, un projet serveur ou une application mobile Android, vous aurez presque certainement besoin de lire, écrire, déplacer ou supprimer des fichiers. Kotlin, en tant que langage moderne fonctionnant sur la JVM, offre toutes les possibilités de la bibliothèque standard Java, tout en ajoutant ses propres extensions pratiques et du sucre syntaxique.
Dans cet article, nous allons détailler comment travailler efficacement avec le système de fichiers en Kotlin. Vous apprendrez à créer et supprimer des fichiers et des répertoires, lire et écrire des données, parcourir les répertoires et gérer les exceptions. Tous les exemples de code seront écrits en Kotlin pur sans utiliser de bibliothèques tierces.
Classes principales et approches
En Kotlin, deux API principales sont utilisées pour travailler avec le système de fichiers :
- java.io.File — l'API classique de Java, que Kotlin enrichit avec ses fonctions d'extension.
- java.nio.file.Path et java.nio.file.Files — une API plus moderne et fonctionnelle issue de Java NIO.
Les deux approches sont entièrement compatibles avec Kotlin, mais la seconde (NIO) est recommandée pour les nouveaux projets car elle offre des possibilités plus riches et de meilleures performances.
Création de fichiers et de répertoires
Commençons par le plus simple — la création d'un fichier. En Kotlin, cela se fait de manière très concise :
import java.io.File
fun main() { val file = File("example.txt") // Création du fichier (retourne true si le fichier a été créé) val created = file.createNewFile() if (created) { println("Fichier créé : ${file.absolutePath}") } else { println("Le fichier existe déjà") } // Création d'un répertoire val dir = File("myDirectory") val dirCreated = dir.mkdir() // ou mkdirs() pour créer des répertoires imbriqués println("Répertoire créé : $dirCreated")}Notez la méthode mkdirs() — elle créera tous les répertoires parents manquants, contrairement à mkdir() qui ne crée que le dernier répertoire du chemin.
Lecture de fichiers
Kotlin offre des extensions élégantes pour lire le contenu des fichiers. Examinons plusieurs façons :
import java.io.File
fun readExamples() { val file = File("data.txt") // Lecture de tout le fichier dans une chaîne val content: String = file.readText() println("Contenu du fichier :$content") // Lecture ligne par ligne dans une liste val lines: List<String> = file.readLines() lines.forEach { println("Ligne : $it") } // Lecture de tous les octets val bytes: ByteArray = file.readBytes() println("Taille du fichier : ${bytes.size} octets") // Lecture avec Buffered (pour les gros fichiers) file.forEachLine { line -> println("Traitement de la ligne : $line") }}Pour les gros fichiers, il est préférable d'utiliser forEachLine ou bufferedReader() afin de ne pas charger tout le fichier en mémoire.
Écriture dans les fichiers
L'écriture de données dans un fichier est également intuitive :
import java.io.File
fun writeExamples() { val file = File("output.txt") // Écriture d'une chaîne (remplace le fichier) file.writeText("Bonjour, Kotlin!Deuxième ligne") // Ajout à la fin du fichier file.appendText("Troisième ligne (ajoutée)") // Écriture d'une liste de chaînes val lines = listOf("Ligne 1", "Ligne 2", "Ligne 3") file.writeText(lines.joinToString("")) // Écriture d'octets val data = byteArrayOf(72, 101, 108, 108, 111) // "Hello" en ASCII file.writeBytes(data)}Si vous avez besoin de plus de contrôle (par exemple, spécifier l'encodage), utilisez
Blogs
Book Recommendations
Lire aussi
Expressions régulières en Java avec exemples : guide complet
JavaScript vs Python : que choisir pour le backend ? Comparaison pratique sur Node.js
Couverture de tests JavaScript : outils et métriques de code
Journée type d'un développeur TypeScript : code, bugs et revue
Type children dans React et TypeScript : guide complet