go实现文件的创建、删除与读取示例代码

2019-11-10 12:19:08于海丽

看看WriteFile具体是如何实现文件的写入的。

func WriteFile(filename string,data []byte,perm os.FileMode) error{
 //打开文件
 f,err:=os.OpenFile(filename,os.O_WRONLY|os.O_CREATE|os.O_TRUNC,perm)
 if err!=nil {
 return err
 }
 //文件的写入
 n,err:=f.Write(data)
 if err==nil && n<len(data){
 err=io.ErrShortWrite
 }
 //关闭文件
 if err1:=f.Close();err==nil{
 err=err1
 }
 return err
}

方法二:打开文件,然后利用Write()进行文件读写, 注意 :此时不能用os.Open()打开,而要用os.OpenFile()打开。 os.Open()和os.OpenFile()两者区别

package main

func main(){
 file,err:=os.OpenFile("a.txt",os.O_RDWR|os.O_CREATE,0777)
 if err!=nil {
 fmt.Println(err)
 }
 defer file.Close()

 content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
 _,err=file.Write(content)
 if err!=nil {
 fmt.Println(err)
 }
 fmt.Println("write file successful")
}

方法三:通过有缓冲操作的bufio提供的包进行操作

如果使用Write方法实现写操作,此时就还需要使用Flush()方法。 golang bufio包中的Write方法分析

package main

func main(){
 file,err:=os.OpenFile("a.txt", os.O_CREATE|os.O_RDWR, 0666)
 if err!=nil {
 fmt.Println(err)
 }
 defer file.Close()

 content:=[]byte("Go is an open source programing language that makes it easy to build simple,reliable,and efficient software")
 //使用NewWriter方法返回的io.Writer缓冲默认大小为4096,也可以使用NewWriterSize方法设置缓存的大小
 newWriter:=bufio.NewWriter(file)
 //将文件写入缓存
 if _,err =newWriter.Write(content);err!=nil {
 fmt.Println(err)
 }
 //从缓存写入到文件中
 if err= newWriter.Flush(); err!=nil {
 fmt.Println(err)
 }
 fmt.Println("write file successful")
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。