GO IO(2)

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