Outils pour utilisateurs

Outils du site


tech:go_lang_-_les_fichiers

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tech:go_lang_-_les_fichiers [2026/05/16 00:07] Jean-Baptistetech:go_lang_-_les_fichiers [2026/05/16 11:41] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon Go Fichier CSV}}
 +
 +# Go lang - les fichiers
 +
 +Exemple lecture fichier texte
 +~~~go
 +package main
 +
 +import (
 +        "bufio"
 +        "fmt"
 +        "os"
 +)
 +
 +func main() {
 +
 +        file, err := os.Open("input.txt")
 +        if err != nil {
 +                panic(err)
 +        }
 +        defer func() {
 +                if err := file.Close(); err != nil {
 +                        panic(err)
 +                }
 +        }()
 +        scanner := bufio.NewScanner(file)
 +
 +        // Iterate over each line
 +        for scanner.Scan() {
 +                line := scanner.Text()
 +                fmt.Println(line)
 +        }
 +
 +}
 +~~~
 +
 +Exemple d'écriture texte
 +~~~go
 +func write_file(filename string, data string) {
 + file, err := os.Create(filename)
 + if err != nil {
 + panic(err)
 + }
 + defer func() {
 + if err := file.Close(); err != nil {
 + panic(err)
 + }
 + }()
 + _, err = file.WriteString(data)
 + if err != nil {
 + panic(err)
 + }
 +
 +}
 +~~~
 +
 +Exemple de copie de fichier
 +
 +Voir : https://opensource.com/article/18/6/copying-files-go
 +
 +~~~go
 +func copyFile(src, dest string) {
 + input, err := ioutil.ReadFile(src)
 + if err != nil {
 + panic(err)
 + }
 +
 + err = ioutil.WriteFile(dest, input, 0644)
 + if err != nil {
 + fmt.Println("Error creating", dest)
 + panic(err)
 + }
 +}
 +~~~
 +
 +
 +Fichier droits POSIX octal mode
 +
 +Voir aussi :
 +* https://golang.howtos.io/using-the-os-filemode-type-in-go/
 +
 +~~~go
 + file, err := os.Lstat("/tmp/plop")
 + if err != nil {
 + panic(err)
 + }
 + mode := file.Mode()
 + fmt.Printf("%s\n", mode)
 + fmt.Printf("%o\n", mode)
 +~~~
 +
 +
 +Exemple lecture fichier CSV
 +~~~go
 +package main
 +
 +import (
 +        "encoding/csv"
 +        "fmt"
 +        "log"
 +        "os"
 +        "regexp"
 +)
 +
 +func IsMatchingRegex(s string, regex string) bool {
 +        return regexp.MustCompile(regex).MatchString(s)
 +}
 +
 +func main() {
 +        file, err := os.Open("data.csv")
 +        if err != nil {
 +                log.Fatal(err)
 +        }
 +        defer file.Close()
 +
 +        // Read all records from the CSV file
 +        reader := csv.NewReader(file)
 +        reader.Comma = ';'
 +        records, err := reader.ReadAll()
 +        if err != nil {
 +                log.Fatal(err)
 +        }
 +
 +
 +        for _, record := range records[1:] {
 +                if IsMatchingRegex(record[0], "^#") {
 +                        continue
 +                }
 +
 +                fmt.Println(record[0])
 +                fmt.Println(record[1])
 +        }
 +}
 +~~~
 +
 +
 +
 +Exemple de calcul de hash d'un fichier
 +~~~go
 +package main
 +
 +import (
 + "crypto/sha256"
 + "encoding/hex"
 + "fmt"
 + "io"
 + "os"
 +)
 +
 +func hashFile(filePath string) (string, error) {
 + file, err := os.Open(filePath)
 + if err != nil {
 + return "", fmt.Errorf("failed to open file: %w", err)
 + }
 + defer file.Close()
 +
 + hasher := sha256.New()
 + if _, err := io.Copy(hasher, file); err != nil {
 + return "", fmt.Errorf("failed to hash file: %w", err)
 + }
 +
 + return hex.EncodeToString(hasher.Sum(nil)), nil
 +}
 +
 +func main() {
 + hash, err := hashFile("/tmp/plop")
 + if err != nil {
 + panic(err)
 + }
 +
 + fmt.Println(hash)
 +}
 +~~~
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki