Travailler avec le système de fichiers en Go : guide complet

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 Go : des bases aux techniques avancées



Go (Golang) est un langage de programmation moderne réputé pour sa simplicité et ses hautes performances. L'une des tâches clés auxquelles tout développeur est confronté est la manipulation du système de fichiers. Dans cet article, nous allons détailler comment créer, lire, écrire des fichiers, gérer des répertoires et traiter des chemins en Go. Vous obtiendrez des exemples de code pratiques qui vous aideront à maîtriser la manipulation des fichiers rapidement et efficacement.



Paquets principaux pour travailler avec le système de fichiers



En Go, le travail avec le système de fichiers est concentré dans trois paquets principaux de la bibliothèque standard :

  • os — opérations de base : ouverture, création, suppression de fichiers et de répertoires.
  • io et io/ioutil — lecture et écriture de données (dans les nouvelles versions de Go, il est recommandé d'utiliser os au lieu de ioutil).
  • path/filepath — manipulation des chemins : concaténation, décomposition, obtention des extensions.


Avant de commencer, assurez-vous d'avoir importé les paquets nécessaires :

package main

import ( "fmt" "os" "io" "path/filepath")


Lecture et écriture de fichiers en Go



Lecture complète d'un fichier

La façon la plus simple de lire un fichier est d'utiliser la fonction os.ReadFile (disponible depuis Go 1.16). Elle retourne une tranche d'octets et une erreur.

func readFileExample() {    data, err := os.ReadFile("example.txt")    if err != nil {        fmt.Println("Erreur de lecture du fichier :", err)        return    }    fmt.Println(string(data))}


Écriture dans un fichier

Pour écrire des données dans un fichier, utilisez os.WriteFile. Si le fichier n'existe pas, il sera créé. S'il existe, il sera écrasé.

func writeFileExample() {    content := []byte("Bonjour le monde !Deuxième ligne.")    err := os.WriteFile("output.txt", content, 0644)    if err != nil {        fmt.Println("Erreur d'écriture :", err)        return    }    fmt.Println("Fichier écrit avec succès")}


Lecture ligne par ligne des gros fichiers

Pour traiter de gros fichiers, il est préférable d'utiliser une lecture bufferisée afin de ne pas charger tout le fichier en mémoire.

import "bufio"

func readLineByLine() { file, err := os.Open("large_file.txt") if err != nil { fmt.Println("Erreur d'ouverture :", err) return } defer file.Close()

scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() fmt.Println(line) } if err := scanner.Err(); err != nil { fmt.Println("Erreur de scan :", err) }}


Travailler avec les répertoires en Go



Création et suppression de répertoires

Pour créer un seul répertoire, utilisez os.Mkdir, pour des répertoires imbriqués, utilisez os.MkdirAll.

func createDirectories() {    // Créer un seul dossier    err := os.Mkdir("mydir", 0755)    if err != nil {        fmt.Println("Erreur de création du dossier :", err)    }

// Créer une structure imbriquée err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { fmt.Println("Erreur de création des dossiers imbriqués :", err) }}


La suppression de répertoires se fait avec les fonctions os.Remove (pour les vides) et os.RemoveAll (pour les non vides).

func removeDirectories() {    // Supprimer un dossier vide    err := os.Remove("mydir")    if err != nil {        fmt.Println("Erreur de suppression :", err)    }

// Supprimer un dossier avec tout son contenu err = os.RemoveAll("path/to") if err != nil { fmt.Println("Erreur de suppression récursive :", err) }}


Lecture du contenu d'un répertoire

La fonction os.ReadDir retourne une liste des éléments dans un répertoire.


                
                

Blogs

Book Recommendations