golang读写文件的几种方法


本文摘自php中文网,作者angryTom,侵删。

golang读写文件的几种方法

读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件

读文件方式一:利用ioutil.ReadFile直接从文件读取到[]byte中

相关推荐:golang教程

1

2

3

4

5

6

7

func Read0()  (string){

    f, err := ioutil.ReadFile("file/test")

    if err != nil {

        fmt.Println("read fail", err)

    }

    return string(f)

}

读文件方式二:先从文件读取到file中,再从file读取到buf,buf再追加到最终的[]byte

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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

}

读文件方式三:先从文件读取到file, 在从file读取到Reader中,从Reader读取到buf, buf最终追加到[]byte

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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

}

读文件方式四:读取到file中,再利用ioutil将file直接读取到[]byte中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//读取到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中文网,大量编程入门教程,欢迎学习!

以上就是golang读写文件的几种方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang (v2)分布式id生成系统,高性能、高可用、易扩展的id生成服务

go - 一个对新手很友好的项目(带界面)

golang中判断两个slice是否相等

go好用的类型转换第三方组件

解析go中的多态 -无需interfaces

go mod特定依赖包处理

golang语言社区投稿】golang高并发基于协程,通道的任务池

2021-04-19

自制文件系统 — 04 hellofs 进阶 分布式加密文件系统

golang怎么把字符串转成int类型

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...