GO IO(2)

作者: 大学渣PG | 来源:发表于2018-11-23 23:21 被阅读0次

使用os进行文件读写

打开文件
func Open(name string) (*File, error)

该方法需提供文件路径 打开模式 文件权限

func OpenFile(name string, flag int, perm FileMode) (*File, error)
读文件

文件对象的Read方法

//从文件对象中读取长度为b的字节,返回当前读到的字节数以及错误信息。因此使用该方法需要先初始化一个符合内容大小的空的字节列表。
//读取到文件的末尾时,该方法返回0,io.EOF
func (f *File) Read(b []byte) (n int, err error)

例:

func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    f,err:=os.Open(pwd+"/io.txt")
    defer f.Close()
    checkErr(err)

    bs:=make([]byte,1024)
    _,err=f.Read(bs)
    checkErr(err)
    fmt.Println(string(bs))
}

bufio包实现了缓存,包装了io.Reader和io.Writer对象,创建了另外的Reader和Writer对象

func (b *Reader) Read(p []byte) (n int, err error)

例:

func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    f,err:=os.Open(pwd+"/io.txt")
    defer f.Close()
    checkErr(err)

    bs:=make([]byte,1024)
    bufReader:=bufio.NewReader(f)

    _,err=bufReader.Read(bs)
    checkErr(err)
    fmt.Println(string(bs))
}
写文件

文件对象的Write方法

//写入长度为b字节切片到文件f中,返回写入字节号和错误信息。当n不等于len(b)时,将返回非空的err
func (f *File) Write(b []byte) (n int, err error)

例:

func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    //使用OpenFile对文件进行模式选择
    f,err:=os.OpenFile(pwd+"/io.txt",os.O_RDWR|os.O_APPEND,0644)
    defer f.Close()
    checkErr(err)

    bs:=[]byte("file write test")
    _,err=f.Write(bs)
    checkErr(err)
}

bufio包实现了缓存,包装了io.Reader和io.Writer对象,创建了另外的Reader和Writer对象

func (b *Writer) Write(p []byte) (nn int, err error)

例:

func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    //使用OpenFile对文件进行模式选择
    f,err:=os.OpenFile(pwd+"/io.txt",os.O_RDWR|os.O_APPEND,0644)
    defer f.Close()
    checkErr(err)

    bs:=[]byte("file write test")
    bufWriter:=bufio.NewWriter(f)
    _,err=bufWriter.Write(bs)
    checkErr(err)
    //使用write方法需要用Flush方法
    bufWriter.Flush()
}

相关文章

  • GO IO(2)

    使用os进行文件读写 打开文件 该方法需提供文件路径 打开模式 文件权限 读文件 文件对象的Read方法 例: b...

  • Golang io reader writer

    推荐阅读Go语言小贴士1 - io包Go语言小贴士2 - 协议解析Go语言小贴士3 - bufio包 一、《GO语...

  • Go语言入门【四】:源码学习-io

    介绍 package io主要包含以下文件: io.go 基础的io操作,如读写,较底层 multi.go 多...

  • [译]Go 语言中的流式 IO

    原文链接 Streaming IO in Go – Learning the Go Programming Lan...

  • Go IO

    ioutil包使用 这个包里面包含了操作文件,文件夹的相关函数 ReadAll函数 该函数读取r中的所有数据,不会...

  • go-libp2p 入门之 PingService exampl

    官网: https://libp2p.io/ 代码:https://github.com/libp2p/go-li...

  • golang

    博客 www.liwenzhou.com 代理 goproxy.io 查看go的配置 go env 初始化 go ...

  • centos7 go-ipfs安装使用

    1.安装go 1.14.4+ 略 2.下载、安装ipfs 参考:https://docs.ipfs.io/how-...

  • 【译】高性能异步 IO —— io_uring (Effecie

    写完 Go 与异步 IO - io_uring 的思考[http://icebergu.com/archives/...

  • 32. Readers读取数据流

    go语言的 io 包指定了 io.Reader 接口。go语言标准库包含了这个接口的许多实现,包括文件、网络连接、...

网友评论

      本文标题:GO IO(2)

      本文链接:https://www.haomeiwen.com/subject/slisqqtx.html