Maison >développement back-end >Golang >Plusieurs méthodes pour lire et écrire des fichiers dans Golang

Plusieurs méthodes pour lire et écrire des fichiers dans Golang

angryTom
angryTomoriginal
2020-03-12 11:06:363414parcourir

Plusieurs méthodes pour lire et écrire des fichiers dans Golang

Plusieurs méthodes de lecture et d'écriture de fichiers en golang

Les fichiers lus sont placés dans file/test : c'est-à-dire le test sous le fichier de package de fichiers, écrivez-y plus de fichiers

Première méthode de lecture du fichier : Utilisez ioutil.ReadFile pour lire directement à partir du fichier dans []octet

Recommandations associées : Tutoriel Golang

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

Méthode de lecture du fichier deux : Lisez d'abord du fichier dans le fichier, puis lisez du fichier dans buf, puis ajoutez buf au dernier []octet

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))
}

Troisième méthode de lecture du fichier : Lire d'abord de fichier en fichier, puis lire du fichier vers Reader, lire du Reader vers buf, et buf est enfin ajouté à []byte

//先从文件读取到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))
}

Quatrième façon de lire des fichiers : Lire dans le fichier, puis utiliser ioutil pour lire le fichier directement dans []byte

//读取到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 chinois Il existe beaucoup de Tutoriels d'introduction à la programmation sur Internet, bienvenue pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn