使用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()
}
网友评论