Travailler avec le système de fichiers en Kotlin : guide 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

Travailler avec le système de fichiers en Kotlin : de la théorie à la pratique

\n\n

Travailler avec le système de fichiers est l'une des tâches fondamentales que chaque développeur rencontre. En Kotlin, grâce à son intégration étroite avec Java et ses propres extensions pratiques, la gestion des fichiers et des répertoires devient intuitive et concise. Dans cet article, nous allons aborder les opérations clés : création, lecture, écriture et suppression de fichiers, ainsi que le travail avec les répertoires. Tous les exemples sont écrits en Kotlin et prêts à être utilisés dans vos projets.

\n\n

Bases : configuration et premiers pas

\n\n

Kotlin n'a pas sa propre bibliothèque distincte pour travailler avec le système de fichiers — il utilise pleinement la puissance de java.io.File, en y ajoutant de nombreuses fonctions d'extension. Cela signifie que vous pouvez utiliser les méthodes Java habituelles, mais avec une syntaxe plus courte et plus sûre.

\n\n
import java.io.File\n\nfun main() {\n    val file = File("example.txt")\n    println(file.exists()) // false, si le fichier n'existe pas\n}
\n\n

La classe principale est java.io.File. Elle représente une abstraction du chemin vers un fichier ou un répertoire, qui n'existe pas nécessairement sur le disque.

\n\n

Lecture et écriture de fichiers en Kotlin

\n\n

Kotlin propose des moyens élégants de lire et d'écrire, qui évitent de devoir gérer manuellement les flux et fermer les ressources.

\n\n

Lecture du contenu entier d'un fichier

\n\n

La façon la plus simple est d'utiliser la fonction readText(). Elle lit tout le fichier en une seule chaîne de caractères.

\n\n
fun readEntireFile() {\n    val file = File("data.txt")\n    if (file.exists()) {\n        val content: String = file.readText()\n        println(content)\n    } else {\n        println("Fichier non trouvé")\n    }\n}
\n\n

Si le fichier est volumineux, il est préférable de lire ligne par ligne :

\n\n
fun readLines() {\n    File("log.txt").useLines { lines ->\n        lines.forEach { line ->\n            println(line)\n        }\n    }\n    // useLines ferme automatiquement le flux\n}
\n\n

Écriture dans un fichier

\n\n

Pour écrire, utilisez writeText() (remplace le fichier) ou appendText() (ajoute à la fin).

\n\n
fun writeToFile() {\n    val file = File("output.txt")\n    file.writeText("Bonjour, Kotlin!\\n")\n    file.appendText("Ceci est la deuxième ligne.")\n    \n    println(file.readText())\n    // Sortie :\n    // Bonjour, Kotlin!\n    // Ceci est la deuxième ligne.\n}
\n\n

Pour des données plus complexes (par exemple, écrire une liste de lignes), il est pratique d'utiliser writeLines() :

\n\n
fun writeListOfLines() {\n    val lines = listOf("Ligne 1", "Ligne 2", "Ligne 3")\n    File("list.txt").writeLines(lines)\n}
\n\n

Création, copie et suppression de fichiers et de répertoires

\n\n

La gestion de la structure des fichiers est une autre tâche courante. Examinons les opérations principales.

\n\n

Création de fichiers et de dossiers

\n\n

La méthode createNewFile() crée un nouveau fichier vide s'il n'existe pas encore. Pour créer des répertoires, utilisez mkdir() (crée uniquement le dernier dossier du chemin) ou mkdirs() (crée tous les répertoires parents manquants).

\n\n
fun createStructure() {\n    val dir = File("my_project/src/main")\n    if (dir.mkdirs()) {\n        println("Répertoire créé : ${dir.absolutePath}")\n    }\n    \n    val newFile = File(dir, "config.ini")\n    if (newFile.createNewFile()) {\n        println("Fichier créé : ${newFile.name}")\n    }\n}
\n\n

Copie et déplacement

\n\n

Kotlin n'a-t-il pas de fonction intégrée copyTo ? En fait si ! La méthode copyTo() permet de copier facilement des fichiers, et renameTo() permet de renommer ou de déplacer.

\n\n
fun copyAndMove() {\n    val source = File("source.txt")\n    val destination = File("backup/source_copy.txt")\n    \n    // Copie\n    source.copyTo(destination, overwrite = true)\n    \n    // Dé                

Blogs

Book Recommendations