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 zu fortgeschrittenen Techniken

Go (Golang) ist eine moderne kompilierte Programmiersprache, bekannt für ihre Leistung, Einfachheit und integrierte Unterstützung für die Arbeit mit dem Dateisystem. Die Fähigkeit, Dateien und Verzeichnisse effizient zu lesen, zu schreiben, zu erstellen und zu verwalten, ist eine der Schlüsselkompetenzen für jeden Go-Entwickler. In diesem Artikel werden wir grundlegende Dateisystemoperationen mit der Standardbibliothek os, io/ioutil (ab Go 1.16 wird die Verwendung von os und io empfohlen) und path/filepath gründlich untersuchen. Sie lernen, wie man Dateien öffnet und schließt, Daten liest und schreibt, mit Verzeichnissen arbeitet und Dateibäume durchläuft.



1. Grundlagen: Öffnen, Lesen und Schreiben von Dateien

Die Arbeit mit Dateien in Go beginnt mit dem Paket os. Um eine Datei zu öffnen, verwenden Sie die Funktion os.Open (schreibgeschützt) oder os.OpenFile (zum Lesen und Schreiben mit Angabe des Modus). Nach Beendigung der Arbeit muss die Datei mit defer file.Close() geschlossen werden, um Systemressourcen freizugeben.



Eine Datei vollständig lesen

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

package main

import ( "fmt" "os")

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


In eine Datei schreiben

Um Daten in eine Datei zu schreiben, verwenden Sie os.WriteFile. Es erstellt oder überschreibt eine Datei.

package main

import ( "os")

func main() { content := []byte("Hallo, Welt!Dies ist eine Zeile zum Schreiben.") err := os.WriteFile("output.txt", content, 0644) if err != nil { panic(err) }}

Beachten Sie das dritte Argument — 0644. Dies ist die Dateiberechtigung im Unix-Stil (Besitzer kann lesen und schreiben, andere können nur lesen).



Lesen und Schreiben mit Pufferung

Für große Dateien oder Stream-Verarbeitung verwenden Sie 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("Scan-Fehler:", err) }}


2. Arbeiten mit Verzeichnissen

Go bietet praktische Funktionen zum Erstellen, Löschen und Lesen von Verzeichnissen. Die wichtigsten befinden sich im Paket os.



Ein Verzeichnis erstellen

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

package main

import ( "os")

func main() { // Ein einzelnes Verzeichnis erstellen err := os.Mkdir("newdir", 0755) if err != nil { panic(err) }

// Verschachtelte Verzeichnisse erstellen err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { panic(err) }}


Verzeichnisinhalt lesen

Die Funktion os.ReadDir gibt eine Liste der Einträge in einem Verzeichnis zurück (seit 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()) }}


Dateien und Verzeichnisse löschen

Verwenden Sie zum Löschen os.Remove (für eine Datei oder ein leeres Verzeichnis) und os.RemoveAll

Blogs

Buchempfehlungen