


Bagaimana untuk membaca fail dalam bahasa Go? Analisis ringkas pelbagai kaedah
Artikel ini akan membincangkan cara membaca fail di Golang. Kami akan menggunakan pakej berikut untuk memproses fail ini. Pakej
- os menyediakan antara muka bebas platform untuk melaksanakan operasi peringkat operasi. Pakej
- IOutil menyediakan fungsi utiliti yang mudah digunakan untuk bekerja dengan fail tanpa mengetahui banyak tentang pelaksanaan dalaman. Pakej
- bufio melaksanakan IO penimbal, yang membantu kami meningkatkan prestasi dan pemprosesan operasi input dan output. Pakej
-
log melaksanakan pakej pengelogan mudah. Kami akan menggunakan ini sepanjang program. Kami akan menggunakan fungsi
Fatal()
pakej pengelogan dalam program kami.
Bacaan Seluruh Fail
Kami boleh membaca keseluruhan fail dengan mudah sekali gus dan menyimpannya dalam pembolehubah. Tetapi ingat, kita tidak sepatutnya melakukan ini dengan fail besar. Kami akan menggunakan fungsi ioutil.ReadFile()
untuk membaca fail dan menyimpan kandungan fail dalam pembolehubah.
Pertama, mari kita simpan fail dalam direktori yang sama dengan program kami. Oleh itu, struktur folder kami akan kelihatan seperti ini.
___ | |_ _ _ _ ilovego.txt | |_ _ _ _ main.go
Kami menulis perkara berikut dalam fungsi main.go
:
package main import ( "fmt" "io/ioutil" "log" ) func main() { content, err := ioutil.ReadFile("ilovego.txt") if err != nil { log.Fatal(err) } fmt.Println(string(content)) }
Tetapi pertama, mari kita bincangkan kes fungsi ReadFile()
:
- Definisi: Fungsi pengisytiharan kaedah
ReadFile(filename string) ([]byte, error)
- Fungsi: Baca fail yang laluannya dihantar ke parameter fungsi dan kembalikan kandungan fail. Digunakan secara dalaman oleh kaedah
os.ReadFile(fileName)
- mengembalikan: kandungan fail dan ralat dalam tatasusunan bait. Panggilan yang berjaya akan kembali err == nil
Fungsi ReadFile dalaman dilaksanakan seperti berikut:
func ReadFile(filename string) ([]byte, error) { return os.ReadFile(filename) }
Sekarang, mari kita kembali ke program kami:
ioutil.ReadFile("readthisfile.txt")
Mengembalikan byteArray dan ralat. Kami menyimpan byteArray dalam pembolehubah "content " dan ralat dalam pembolehubah " err ".- Kemudian kita letakkan syarat if dan jika nilai err bukan nol, kita akan print error err menggunakan fungsi
log.Fatal()
. Ingat, fungsiFatal()
adalah bersamaan dengan fungsiPrint()
, yang kemudiannya memanggilos.Exit(1)
. - Akhir sekali, kami akan mencetak kandungan fail menggunakan fungsi
fmt.Println()
. Kita tidak boleh hanya mencetak pembolehubahcontent
kerana ia adalah tatasusunan bait, kita perlu menukarnya kepada rentetan:string(content)
Kemudian buat fail ilovego.txt
baharu dan tuliskannya seperti berikut Kandungan:
I Love Golang, This is One of the Best Languages on the World!
Akhir sekali, laksanakan kod di atas dan anda boleh melihat output berikut:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
Baca baris demi baris
Imbasan pengimbas Pengkompil menyediakan antara muka yang mudah untuk membaca data, seperti fail yang terdiri daripada baris teks yang dibatasi baris baharu. Ia membaca data melalui tag; fungsi Split
mentakrifkan tag. Secara lalai, fungsi ini memecahkan data ke dalam baris dan menjalurkan penghujung baris.
package main import ( "fmt" // "io/ioutil" "bufio" "log" "os" ) func main() { // opening the file using Open function f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() // create a scanner for the file scanner := bufio.NewScanner(f) // loop through the scanner until it return fasle for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
os.Open()
Buka fail yang diluluskan dalam parameter. Jika sebarang ralat ditemui semasa membuka fail, ia akan mengembalikan ralat yang sama. Jika tidak, ralat akan menjadi sifar.- Kami kemudian menggunakan pengimbas untuk membaca fail dan mengimbas baris demi baris sehingga akhir kandungan fail.
- Akhir sekali, kami mahu menutup fail.
Laksanakan program dan hasilnya adalah seperti berikut:
Baca perkataan demi perkataan
Kita juga boleh lulus Baca fail perkataan demi perkataan:
package main import ( "bufio" "fmt" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { fmt.Println(err) } defer f.Close() scanner := bufio.NewScanner(f) scanner.Split(bufio.ScanWords) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } }
Jalankan kod:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
Baca fail dalam ketulan
Satu masa Membaca keseluruhan fail kelihatan seperti cara yang mudah, tetapi kadangkala kita perlu membuat program kami beberapa pengoptimuman dari perspektif pengurusan memori. Golang menyediakan cara untuk membaca fail dalam ketulan dan bukannya membacanya secara keseluruhan atau malah baris demi baris. Kerana jika saiz baris terlalu besar, membaca baris demi baris juga mungkin tidak cekap. Pakej
package main import ( "bufio" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 16) for { // reading a file upto buffer n, err := reader.Read(buf) if err != nil { if err != io.EOF { log.Fatal(err) } break } fmt.Print(string(buf[0:n])) } fmt.Println() }
Bacaan binari
hex
melaksanakan pengekodan dan penyahkodan heksadesimal.
package main import ( "bufio" "encoding/hex" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("sid.jpg") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 256) for { _, err := reader.Read(buf) if err != nil { if err != io.EOF { fmt.Println(err) } break } fmt.Printf("%s", hex.Dump(buf)) } }
总结
本文介绍了 Go 语言读取文件的几种方式,ioutil.ReadFile
函数将整个文件读成一个字符串。这个函数很方便,但不应该用于非常大的文件。希望能对你有所帮助!
推荐学习:Golang教程
Atas ialah kandungan terperinci Bagaimana untuk membaca fail dalam bahasa Go? Analisis ringkas pelbagai kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Cecair mengendalikan isu keselamatan bersamaan dalam penulisan log pelbagai proses. Proses berganda menulis fail log yang sama pada masa yang sama. Bagaimana untuk memastikan kesesuaian selamat dan cekap? Ini ...

Penghapusan automatik Golang Generik Jenis Kekangan Jenis dalam Pengguna VSCode mungkin menghadapi masalah yang aneh ketika menulis kod Golang menggunakan vscode. Bila ...
