Arbeiten mit dem Dateisystem in Go: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit dem Dateisystem in Go: Von den Grundlagen bis zu fortgeschrittenen Techniken



Go (Golang) ist eine moderne Programmiersprache, die für ihre Einfachheit und hohe Leistung bekannt ist. Eine der wichtigsten Aufgaben, mit denen jeder Entwickler konfrontiert wird, ist die Arbeit mit dem Dateisystem. In diesem Artikel werden wir im Detail besprechen, wie man Dateien erstellt, liest, schreibt, Verzeichnisse verwaltet und Pfade in Go verarbeitet. Sie erhalten praktische Codebeispiele, die Ihnen helfen, die Arbeit mit Dateien schnell und effizient zu meistern.



Wichtige Pakete für die Arbeit mit dem Dateisystem



In Go ist die Arbeit mit dem Dateisystem in drei Hauptpaketen der Standardbibliothek konzentriert:

  • os — grundlegende Operationen: Öffnen, Erstellen, Löschen von Dateien und Verzeichnissen.
  • io und io/ioutil — Lesen und Schreiben von Daten (in neueren Go-Versionen wird empfohlen, os anstelle von ioutil zu verwenden).
  • path/filepath — Arbeiten mit Pfaden: Zusammenfügen, Aufteilen, Erweiterungen ermitteln.


Stellen Sie vor Beginn der Arbeit sicher, dass Sie die erforderlichen Pakete importiert haben:

package main

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


Lesen und Schreiben von Dateien in Go



Eine Datei vollständig lesen

Der einfachste Weg, eine Datei zu lesen, ist die Verwendung der Funktion os.ReadFile (verfügbar seit Go 1.16). Sie gibt ein Byte-Slice und einen Fehler zurück.

func readFileExample() {    data, err := os.ReadFile("example.txt")    if err != nil {        fmt.Println("Fehler beim Lesen der Datei:", err)        return    }    fmt.Println(string(data))}


In eine Datei schreiben

Verwenden Sie zum Schreiben von Daten in eine Datei os.WriteFile. Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie existiert, wird sie überschrieben.

func writeFileExample() {    content := []byte("Hallo, Welt!Zweite Zeile.")    err := os.WriteFile("output.txt", content, 0644)    if err != nil {        fmt.Println("Fehler beim Schreiben:", err)        return    }    fmt.Println("Datei erfolgreich geschrieben")}


Zeilenweises Lesen großer Dateien

Für die Verarbeitung großer Dateien ist es besser, gepuffertes Lesen zu verwenden, um nicht die gesamte Datei in den Speicher zu laden.

import "bufio"

func readLineByLine() { file, err := os.Open("large_file.txt") if err != nil { fmt.Println("Fehler beim Öffnen:", 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("Fehler beim Scannen:", err) }}


Arbeiten mit Verzeichnissen in Go



Verzeichnisse erstellen und löschen

Verwenden Sie zum Erstellen eines einzelnen Verzeichnisses os.Mkdir, für verschachtelte Verzeichnisse os.MkdirAll.

func createDirectories() {    // Ein einzelnes Verzeichnis erstellen    err := os.Mkdir("mydir", 0755)    if err != nil {        fmt.Println("Fehler beim Erstellen des Verzeichnisses:", err)    }

// Eine verschachtelte Struktur erstellen err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { fmt.Println("Fehler beim Erstellen verschachtelter Verzeichnisse:", err) }}


Das Löschen von Verzeichnissen erfolgt mit den Funktionen os.Remove (für leere) und os.RemoveAll (für nicht leere).

func removeDirectories() {    // Leeres Verzeichnis löschen    err := os.Remove("mydir")    if err != nil {        fmt.Println("Fehler beim Löschen:", err)    }

// Verzeichnis mit gesamten Inhalt löschen err = os.RemoveAll("path/to") if err != nil { fmt.Println("Fehler beim rekursiven Löschen:", err) }}


Inhalt eines Verzeichnisses lesen

Die Funktion os.ReadDir gibt eine Liste der Elemente in einem Verzeichnis zurück.


                
                

Blogs

Buchempfehlungen