Dateien in Go schreiben

GolangGolangBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieses Labor zielt darauf ab, Ihre Fähigkeiten beim Schreiben von Dateien in Go zu testen. Sie werden lernen, wie man einen String oder Bytes in eine Datei schreibt und wie man bufferte Writer verwendet.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FileOperationsGroup(["File Operations"]) go/FileOperationsGroup -.-> go/writing_files("Writing Files") subgraph Lab Skills go/writing_files -.-> lab-15531{{"Dateien in Go schreiben"}} end

Dateien schreiben

Sie müssen ein Go-Programm schreiben, das einen String und Bytes in eine Datei schreibt und bufferte Writer verwendet.

  • Das Programm sollte einen String und Bytes in eine Datei schreiben.
  • Das Programm sollte bufferte Writer verwenden.
## Versuchen Sie, den Dateischreibcode auszuführen.
$ go run writing-files.go
wrote 5 bytes
wrote 7 bytes
wrote 9 bytes

## Überprüfen Sie dann den Inhalt der geschriebenen Dateien.
$ cat /tmp/dat1
hello
go
$ cat /tmp/dat2
some
writes
buffered

## Als Nächstes betrachten wir die Anwendung einiger der
## Datei-E/A-Ideen, die wir gerade gesehen haben, auf die
## `stdin`- und `stdout`-Ströme.

Hier ist der vollständige Code:

// Dateien in Go zu schreiben, folgt ähnlichen Mustern wie die,
// die wir früher beim Lesen gesehen haben.

package main

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

func check(e error) {
	if e!= nil {
		panic(e)
	}
}

func main() {

	// Um zu beginnen, hier ist, wie man einen String (oder einfach
	// Bytes) in eine Datei schreibt.
	d1 := []byte("hello\ngo\n")
	err := os.WriteFile("/tmp/dat1", d1, 0644)
	check(err)

	// Für feinere Schreibvorgänge öffnen Sie eine Datei zum Schreiben.
	f, err := os.Create("/tmp/dat2")
	check(err)

	// Es ist üblich, direkt nach dem Öffnen einer Datei ein `Close`
	// auszulösen.
	defer f.Close()

	// Sie können wie erwartet Byte-Slices `Write`.
	d2 := []byte{115, 111, 109, 101, 10}
	n2, err := f.Write(d2)
	check(err)
	fmt.Printf("wrote %d bytes\n", n2)

	// Ein `WriteString` ist ebenfalls verfügbar.
	n3, err := f.WriteString("writes\n")
	check(err)
	fmt.Printf("wrote %d bytes\n", n3)

	// Stellen Sie eine `Sync`-Operation aus, um die Schreibvorgänge
	// in die dauerhafte Speicherung zu flushen.
	f.Sync()

	// `bufio` bietet neben den buffered Readers, die wir früher
	// gesehen haben, auch buffered Writer an.
	w := bufio.NewWriter(f)
	n4, err := w.WriteString("buffered\n")
	check(err)
	fmt.Printf("wrote %d bytes\n", n4)

	// Verwenden Sie `Flush`, um sicherzustellen, dass alle
	// buffered Operationen auf den zugrunde liegenden Writer
	// angewendet wurden.
	w.Flush()

}

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man einen String oder Bytes in eine Datei schreibt und wie man in Go bufferte Writer verwendet.