Rumah > pembangunan bahagian belakang > Golang > Kemahiran pemprosesan fail dan operasi IO dalam bahasa Go

Kemahiran pemprosesan fail dan operasi IO dalam bahasa Go

WBOY
Lepaskan: 2023-06-05 08:21:03
asal
1149 orang telah melayarinya

Sebagai bahasa pengaturcaraan yang popular sejak beberapa tahun kebelakangan ini, bahasa Go mempunyai fungsi berkuasa dan prestasi cemerlang dalam pemprosesan fail dan operasi IO. Pemprosesan fail dan operasi IO ialah cara interaksi yang penting antara pembangun dan komputer, dan juga kemahiran asas yang diperlukan untuk membangunkan program berkualiti tinggi. Artikel ini akan memperkenalkan beberapa pemprosesan fail dan teknik operasi IO yang biasa digunakan dalam bahasa Go untuk membantu pembaca menguasai pengetahuan yang berkaitan dengan cepat.

1. Pemprosesan fail

  1. Membuka fail

Membuka fail dalam bahasa Go dilaksanakan melalui fungsi Buka pakej os:

func Open(name string) (*File, error)
Salin selepas log masuk

Fungsi ini mengembalikan objek fail dan objek ralat. Objek fail ialah jenis antara muka dengan kaedah baca dan tulis Ia mempunyai tiga kaedah: Baca, Tulis dan Tutup. Objek ralat ialah antara muka jenis ralat yang mewakili mesej ralat yang berlaku.

Kod contoh:

file, err := os.Open("test.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()
Salin selepas log masuk

Kod di atas boleh membuka fail bernama test.txt dan menutup fail secara automatik selepas pemprosesan fail selesai.

  1. Baca kandungan fail

Membaca kandungan fail dicapai dengan membaca objek fail Untuk membaca kandungan fail, anda boleh menggunakan kaedah Read dan ReadAt bagi objek fail. Baca membaca kandungan fail secara berurutan dan mengembalikan bilangan bait yang dibaca Apabila penghujung fail dibaca, ralat io.EOF dikembalikan. ReadAt mula membaca kandungan fail pada offset yang ditentukan Fail boleh dibaca tidak tertib dan bilangan bait yang dibaca dikembalikan.

Kod sampel:

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    content, err := ioutil.ReadFile("test.txt")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("File contents: %s", content)
}
Salin selepas log masuk

Dengan kod di atas, anda boleh menggunakan pakej ioutil untuk membaca kandungan fail.

  1. Menulis kandungan fail

Menulis kandungan fail juga dilaksanakan melalui objek fail Kaedah Write dan WriteAt bagi objek fail boleh menulis secara berurutan dan mengikut offset masing-masing . Tulis, fungsi output ini akan mengembalikan bilangan bait yang ditulis.

Kod contoh:

package main

import (
    "log"
    "os"
)

func main() {
    file, err := os.Create("test.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    file.Write([]byte("Hello, world"))
}
Salin selepas log masuk

Kod di atas boleh mencipta fail test.txt dan menulis "Hello, World" ke dalamnya.

  1. Padam fail

Fail boleh dipadamkan melalui pakej os bahasa Go Cara untuk memadam fail adalah dengan menggunakan fungsi Buang dan ambil nama fail sebagai a parameter.

Kod contoh:

package main

import (
    "log"
    "os"
)

func main() {
    err := os.Remove("test.txt")
    if err != nil {
        log.Fatal(err)
    }
}
Salin selepas log masuk

Fail bernama test.txt boleh dipadamkan melalui kod di atas.

2. Kemahiran operasi IO

  1. Mengendalikan aliran input dan output standard

Gunakan aliran input dan output standard (stdin, stdout) dalam os pakej dalam bahasa Go dan stderr), anda boleh menggunakan kaedah input dan output standard pakej os untuk mengendalikannya Kaedahnya adalah seperti berikut:

os.Stdin         // 标准输入
os.Stdout        // 标准输出
os.Stderr        // 标准错误输出
Salin selepas log masuk

Kod sampel:

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintln(os.Stdout, "Hello, world")
    fmt.Fprintln(os.Stderr, "This is an error")
}
Salin selepas log masuk

Melalui kod di atas, anda boleh output ke output standard dan ralat standard masing-masing Output sekeping teks.

  1. String input dan output stream

Dalam bahasa Go, terdapat jenis yang dipanggil bytes.Buffer, yang boleh digunakan untuk menyimpan rentetan dan memberikan input untuk mereka antara muka output . Melalui jenis byte.Buffer, kita boleh menukar aliran input dan output ke dalam pemprosesan aliran bait untuk memproses input dan output rentetan.

Kod contoh:

package main

import (
    "bytes"
    "fmt"
)

func main() {
    buf := bytes.NewBufferString("Hello, world")
    fmt.Println(buf.String())
}
Salin selepas log masuk

Melalui kod di atas, kami "menulis" ayat dalam buf, dan kemudian menggunakan kaedah String() untuk mengeluarkannya, yang boleh dilihat pada konsol The rentetan "Hello, dunia" dicapai.

  1. Baca aliran input ke dalam tatasusunan bait

Pakej io/ioutil dalam bahasa Go dengan mudah boleh melaksanakan operasi membaca dan menulis data, antaranya pakej ioutil ReadAll membaca aliran input ke dalam tatasusunan bait dan mengembalikannya.

Kod sampel:

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    data, err := ioutil.ReadAll(os.Stdin)
    if err != nil {
        fmt.Println("ERROR reading STDIN: ", err)
        return
    }
    fmt.Println("STDIN = ", string(data))
}
Salin selepas log masuk

Kod di atas boleh membaca aliran input standard ke dalam data dan mencetaknya.

Artikel ini menerangkan beberapa teknik pemprosesan fail dan operasi IO biasa dalam bahasa Go, seperti membuka, membaca, menulis dan memadam fail, serta mengendalikan aliran input dan output standard, aliran input dan output rentetan dan input bacaan Menstrim ke helah sederhana tatasusunan byte. Teknik ini sangat berguna untuk membangunkan program berkualiti tinggi, dan pembaca boleh menyingkirkan masalah dan meningkatkan kecekapan kerja mengikut keperluan mereka sendiri.

Atas ialah kandungan terperinci Kemahiran pemprosesan fail dan operasi IO dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan