Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere Methoden zum Lesen und Schreiben von Dateien in Golang

Mehrere Methoden zum Lesen und Schreiben von Dateien in Golang

angryTom
angryTomOriginal
2020-03-12 11:06:363354Durchsuche

Mehrere Methoden zum Lesen und Schreiben von Dateien in Golang

Mehrere Methoden zum Lesen und Schreiben von Dateien in Golang

Die gelesenen Dateien werden in Datei/Test abgelegt: Das heißt, der Test unter dem Dateipaketdatei, weitere Dateien darin schreiben

Methode eins zum Lesen der Datei: Verwenden Sie ioutil.ReadFile, um direkt aus der Datei in []Byte zu lesen

Verwandte Empfehlungen: Golang-Tutorial

func Read0()  (string){
    f, err := ioutil.ReadFile("file/test")
    if err != nil {
        fmt.Println("read fail", err)
    }
    return string(f)
}

Datei lesen Methode zwei: Zuerst aus der Datei in die Datei lesen, dann aus der Datei in buf lesen und dann buf an das letzte []Byte anhängen

func Read1()  (string){
    //获得一个file
    f, err := os.Open("file/test")
    if err != nil {
        fmt.Println("read fail")
        return ""
    }
    //把file读取到缓冲区中
    defer f.Close()
    var chunk []byte
    buf := make([]byte, 1024)
    for {
        //从file读取到buf中
        n, err := f.Read(buf)
        if err != nil && err != io.EOF{
            fmt.Println("read buf fail", err)
            return ""
        }
        //说明读取结束
        if n == 0 {
            break
        }
        //读取到最终的缓冲区中
        chunk = append(chunk, buf[:n]...)
    }
    return string(chunk)
    //fmt.Println(string(chunk))
}

Methode drei zum Lesen von Dateien: Zuerst von Datei zu Datei lesen, dann von Datei zu Reader lesen, vom Reader zu buf lesen und schließlich wird buf an []Byte angehängt

//先从文件读取到file, 在从file读取到Reader中,从Reader读取到buf, buf最终追加到[]byte,这个排第三
func Read2() (string) {
    fi, err := os.Open("file/test")
    if err != nil {
        panic(err)
    }
    defer fi.Close()
    r := bufio.NewReader(fi)
    var chunks []byte
    buf := make([]byte, 1024)
    for {
        n, err := r.Read(buf)
        if err != nil && err != io.EOF {
            panic(err)
        }
        if 0 == n {
            break
        }
        //fmt.Println(string(buf))
        chunks = append(chunks, buf...)
    }
    return string(chunks)
    //fmt.Println(string(chunks))
}

Vierte Möglichkeit, Dateien zu lesen: In Datei lesen und dann mit ioutil die Datei direkt in []Byte einlesen

//读取到file中,再利用ioutil将file直接读取到[]byte中, 这是最优
func Read3()  (string){
    f, err := os.Open("file/test")
    if err != nil {
        fmt.Println("read file fail", err)
        return ""
    }
    defer f.Close()
    fd, err := ioutil.ReadAll(f)
    if err != nil {
        fmt.Println("read to fd fail", err)
        return ""
    }
    return string(fd)
}

PHP-Chinesisch Es gibt Viele Einführungs-Programmier-Tutorials im Internet, willkommen zum Lernen!

Das obige ist der detaillierte Inhalt vonMehrere Methoden zum Lesen und Schreiben von Dateien in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn