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 compilé moderne, réputé pour ses performances, sa simplicité et sa prise en charge intégrée du système de fichiers. La capacité à lire, écrire, créer et gérer efficacement des fichiers et des répertoires est une compétence clé pour tout développeur Go. Dans cet article, nous allons détailler les opérations fondamentales sur le système de fichiers en utilisant la bibliothèque standard os, io/ioutil (à partir de Go 1.16, il est recommandé d'utiliser os et io) et path/filepath. Vous apprendrez à ouvrir et fermer des fichiers, lire et écrire des données, travailler avec des répertoires et parcourir des arborescences de fichiers.



1. Bases : ouverture, lecture et écriture de fichiers

Le travail avec les fichiers en Go commence avec le package os. Pour ouvrir un fichier, on utilise la fonction os.Open (lecture seule) ou os.OpenFile (lecture et écriture avec spécification du mode). Après utilisation, le fichier doit impérativement être fermé avec defer file.Close() pour libérer les ressources système.



Lecture complète d'un fichier

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

package main

import ( "fmt" "os")

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


Écriture dans un fichier

Pour écrire des données dans un fichier, on utilise os.WriteFile. Il crée ou écrase le fichier.

package main

import ( "os")

func main() { content := []byte("Bonjour le monde !Ceci est une ligne à écrire.") err := os.WriteFile("output.txt", content, 0644) if err != nil { panic(err) }}

Notez le troisième argument — 0644. Ce sont les permissions d'accès au fichier en style Unix (le propriétaire peut lire et écrire, les autres peuvent seulement lire).



Lecture et écriture avec tampon

Pour les gros fichiers ou le traitement en flux, utilisez bufio :

package main

import ( "bufio" "fmt" "os")

func main() { file, err := os.Open("large.txt") if err != nil { panic(err) } defer file.Close()

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


2. Travail avec les répertoires

Go fournit des fonctions pratiques pour créer, supprimer et lire des répertoires. Les principales se trouvent dans le package os.



Création d'un répertoire

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

package main

import ( "os")

func main() { // Créer un seul répertoire err := os.Mkdir("newdir", 0755) if err != nil { panic(err) }

// Créer des répertoires imbriqués err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { panic(err) }}


Lecture du contenu d'un répertoire

La fonction os.ReadDir retourne une liste des éléments dans un répertoire (depuis Go 1.16).

package main

import ( "fmt" "os")

func main() { entries, err := os.ReadDir(".") if err != nil { panic(err) }

for _, entry := range entries { fmt.Println(entry.Name(), entry.IsDir()) }}


Suppression de fichiers et de répertoires

Pour la suppression, utilisez os.Remove (pour un fichier ou un répertoire vide) et os.RemoveAll

Blogs

Book Recommendations