Technologie

Comment interagir avec les fichiers et les répertoires en Go ?

Comment interagir avec les fichiers et les répertoires en Go ?

Travailler avec des fichiers et des répertoires est une tâche essentielle pour les applications qui doivent stocker et récupérer des données. Go fournit le paquetage filepath pour des opérations sur les chemins de fichiers indépendantes de la plateforme. Le paquetage inclut des fonctions pour manipuler les chemins de fichiers et il est compatible avec Windows, Linux et macOS.


Les fonctions incluses dans filepath peuvent joindre, diviser et nettoyer les chemins de fichiers pour s’assurer qu’ils sont valides. Le paquetage possède également des fonctions pour parcourir les répertoires et rechercher des fichiers.

Parcourir les arbres des répertoires

Le site Marche fonction de la chemin de fichier fournit une fonctionnalité permettant de parcourir une arborescence de répertoires et de parcourir les fichiers et les répertoires dans un ordre préalable. Il visitera récursivement tous les répertoires situés sous la racine donnée. La fonction Walk prend un répertoire racine et une fonction qui prend le chemin, une instance d’information sur le fichier et une instance d’erreur.

 package main

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

func main() {
    // Defines the root directory to start the walk
    root := "."

    // Uses the Walk function to walk the directory tree
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // Prints the name of each file or directory
        fmt.Println(path)
        return nil
    })

    // Checks for errors
    if err != nil {
        fmt.Printf("Error walking directory tree: %v\n", err)
    }
}

Ce programme définit le répertoire racine comme le répertoire de travail actuel. Le site principal parcourt les répertoires du répertoire racine et affiche les noms des fichiers.

résultat de Walking Directory Trees

Correspondance de fichiers avec le filtrage par motif

Vous pouvez utiliser la fonction Correspondance pour faire correspondre les noms de fichiers à un motif. La syntaxe du motif est basée sur la syntaxe courante des caractères génériques de fichier, qui utilise des métacaractères, connus sous le nom de motifs globaux dans les environnements Unix.

 package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines the pattern to match
    pattern := "*.txt"

    // Uses the Match function to match the pattern on files
    match, err := filepath.Match(pattern, "file.txt")

    if err != nil {
        fmt.Printf("Error matching pattern: %v\n", err)
        return
    }

    // Prints the result of the match
    if match {
        fmt.Println("File matches pattern.")
    } else {
        fmt.Println("File does not match pattern.")
    }
}

Le site principal fait correspondre un nom de fichier à la base de données *.txt et imprime une chaîne de caractères en fonction du résultat de l’instruction conditionnelle.

Nettoyage des chemins avec la fonction Clean

Le site Propre prend un chemin d’accès à un fichier et renvoie une version nettoyée du chemin en supprimant les séparateurs inutiles et les changements de répertoire, tels que . (répertoire actuel) et .. (répertoire parent) segments.

Le nettoyage des chemins de fichiers est utile car il permet d’éviter les erreurs si un chemin contient des séparateurs redondants ou des segments invalides, ou construit des chemins indépendants du répertoire de travail actuel.

 package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Creates a path with redundant separators and invalid segments
    path := "/foo/bar//baz/.././qux/"

    // Cleans the path
    cleanPath := filepath.Clean(path)

    // Prints the original and cleaned file paths
    fmt.Println("Original path:", path)
    fmt.Println("Cleaned path:", cleanPath)
}

Le site chemin est le chemin d’accès initial au fichier, et la variable Nettoyer fonction nettoie le chemin et renvoie le chemin du fichier nettoyé. L’adresse principal imprime les chemins de fichiers initiaux et propres.

résultat du nettoyage des chemins avec la fonction Clean

Joindre et diviser les chemins d’accès aux fichiers dans Go

Le site Rejoignez et Split Les fonctions fournissent une fonctionnalité pour joindre et diviser les chemins de fichiers.

La fonction Join prend un nombre quelconque d’éléments de chemin. Elle renvoie une chaîne de chemin d’accès unique qui résulte de la concaténation de ces éléments en utilisant le séparateur de chemin approprié au système d’exploitation. L’adresse Join est utile pour construire des chemins de fichiers indépendants du système de fichiers sous-jacent.

 package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines four file paths for the join operation
    path1 := "folder1"
    path2 := "folder2"
    path3 := "subfolder1"
    path4 := "example.txt"

    // Joins the four file paths together into a single path
    joinedPath := filepath.Join(path1, path2, path3, path4)

    // Print the unified file path
    fmt.Println("Joined Path:", joinedPath)
}

Le site chemin1, chemin2et chemin3 sont des noms de dossiers, et les variables chemin4 variable est un nom de fichier. Le site Rejoindre prend les noms des variables de chemin et renvoie le chemin d’accès au fichier concaténé. Le site main imprime le chemin d’accès au fichier concaténé dans la console avec la fonction fmt paquet.

Le site Split prend une chaîne de chemin et renvoie les composants du nom de répertoire et du nom de fichier du chemin. Le site Split est utile pour extraire les noms de fichiers ou déterminer le répertoire parent d’un fichier.

 package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Sets the file path for the split operation
    filePath := "/home/user/documents/example.txt"
    
    // Use the Split function to split the file path
    // into its directory and file components
    dir, file := filepath.Split(filePath)
    
    // Print the directory and file components
    fmt.Println("Directory:", dir)
    fmt.Println("File:", file)
}

Le site filePath est le chemin du fichier original, et la variable Diviser fonction prend dans le filePath et renvoie les noms de répertoire et de fichier sous forme de chaînes de caractères. L’adresse principal affiche les noms des répertoires et des fichiers sur la console.

Vous pouvez manipuler les fichiers texte avec Go

En plus des fonctionnalités du système de fichiers, Go fournit des paquets pour vous aider à travailler avec plusieurs types de fichiers, y compris les fichiers texte.

Vous pouvez utiliser la fonction bufio pour les opérations d’entrée et de sortie en mode tampon sur les fichiers texte et le paquet os paquet pour la création de fichiers, entre autres opérations.

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Lecture suivante
Chargement de l’article suivant…
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x