Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membaca Kandungan Fail Teks dalam Go?
Apabila bekerja dengan fail teks dalam Go, adalah penting untuk memahami cara membaca kandungannya. Walau bagaimanapun, soalan yang anda kemukakan, "Bagaimana hendak membaca fail teks? [pendua]," menunjukkan bahawa tugasan ini mungkin lebih kompleks daripada yang kelihatan.
Kod yang anda berikan:
package main import ( "fmt" "os" "log" ) func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } fmt.Print(file) }
berjaya membaca fail, tetapi output hanyalah nilai penunjuk bagi deskriptor fail (*os.File). Untuk benar-benar mendapatkan kandungan fail, anda perlu menggunakan salah satu daripada beberapa teknik:
Untuk fail kecil, pendekatan paling mudah ialah menggunakan io/ioutil.ReadAll untuk memuatkan keseluruhan fail ke dalam ingatan.
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() b, err := io.ReadAll(file) fmt.Print(b) }
Untuk fail yang lebih besar, baca dalam ketulan boleh menjadi lebih cekap ingatan.
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() buf := make([]byte, 32*1024) for { n, err := file.Read(buf) if n > 0 { fmt.Print(buf[:n]) } if err == io.EOF { break } if err != nil { log.Printf("read %d bytes: %v", n, err) break } } }
Akhir sekali, anda boleh menggunakan pakej bufio untuk mencipta Pengimbas yang membaca fail dalam token, memajukan berdasarkan pemisah (secara lalai, baris baharu).
func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) fmt.Println(scanner.Bytes()) } }
Atas ialah kandungan terperinci Bagaimana untuk Membaca Kandungan Fail Teks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!