HOWTO · Go
Lesen Sie in Go eine Datei in einen String ein
ioutil.ReadFile() ist ein Teil der ioutil-Bibliothek in Go zum Lesen einer Datei.
Auf dieser Seite
GoLang bietet viele Dateioperationen-Tools, von denen eines das Einlesen einer Datei in einen String ist. ioutil.ReadFile(), File.Read(), buf.ReadFrom() und strings.Builder sind nur einige der Methoden, die verwendet werden können, um den Inhalt einer Datei effizient in eine zu schreiben Schnur.
Verwenden Sie die ioutil.ReadFile()-Methode in Go
package main
import
(
"fmt"
"io/ioutil"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("File.txt", inputData, 0777)
Data, err := ioutil.ReadFile("File.txt")
if err != nil {
fmt.Println(err)
}
fmt.Print(string(Data))
}
Ausgang:
Hello, World!
Der obige Code ermöglicht es uns, eine neue Datei zu erstellen und Daten zu schreiben. Die erstellte Datei wird dann mit der Methode ioutil.ReadFile() gelesen.
Verwenden Sie die File.Read()-Methode in Go
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"io"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("file.txt", inputData, 0777)
f, err := os.Open("file.txt")
if err != nil {
log.Fatalf("Error in reading file: %v", err)
}
defer f.Close()
buf := make([]byte, 1024)
for {
n, err := f.Read(buf)
if err == io.EOF {
break
}
if err != nil {
fmt.Println(err)
continue
}
if n > 0 {
fmt.Println(string(buf[:n]))
}
}
}
Ausgang:
Hello, World!
Im obigen Code lesen wir die Datei, indem wir sie teilen. Wir geben jedes Mal die Puffergröße an, die wir lesen möchten, und dann wird nur len(buf) im Speicher zugewiesen.
Die Datei wird dann bei jeder Iteration in Stücken gelesen. Diese Methode wird hauptsächlich für große Dateien verwendet, bei denen der Inhalt einer Datei nicht vollständig in den Speicher passt.
Verwenden Sie die buf.ReadFrom()-Methode in Go
package main
import (
"fmt"
"io/ioutil"
"os"
"bytes"
"log"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("File.txt", inputData, 0777)
f, err := os.Open("File.txt")
if err != nil{
log.Fatal(err)
}
defer f.Close()
buf := new(bytes.Buffer)
buf.ReadFrom(f)
data := buf.String()
fmt.Print(data)
}
Ausgang:
Hello, World!
Im obigen Code haben wir buf.ReadFrom() verwendet, das Daten aus der Datei bis EOF liest und an den Puffer anhängt; die Puffergröße wächst nach Bedarf.
Verwenden Sie die strings.Builder-Methode in Go
package main
import (
"io/ioutil"
"io"
"os"
"strings"
)
func main() {
inputData := []byte("Hello, World!")
err := ioutil.WriteFile("file.txt", inputData, 0777)
f, err := os.Open("file.txt")
if err != nil {
panic(err)
}
defer f.Close()
b := new(strings.Builder)
io.Copy(b, f)
print(b.String())
}
Ausgang:
Hello, World!
Im obigen Code verkettet strings.Builder die Strings. Die Daten werden Stück für Stück aus der Datei gelesen und dann für den Druck zusammengesetzt.