golang文件读取介绍

来源:互联网 发布:java读取xml配置文件 编辑:程序博客网 时间:2024/06/08 14:03
golang提供了多种文件读取方式,第一种方式,也是最简单的一种方式,如下:
bytes, err := ioutil.ReadFile("a.txt")if err != nil {panic(err)}fmt.Println(string(bytes))

该种方式需要引入ioutil包,ioutil.ReadFile的入参为文件名,返回值分别是文件内容,和错误信息。


第二种方式需要通过os.Open打开文件,然后通过ioutil.ReadAll来读取,如下:

fin, err := os.Open("a.txt")if err != nil {panic(err)}defer fin.Close()bytes, err := ioutil.ReadAll(fin)if err != nil {panic(err)}fmt.Println(string(bytes))

第二种方式需要同时引入os包和ioutil包,os.Open入参为文件名,返回值分别是文件句柄和错误信息,ioutil.ReadAll入参为io.Reader,因为File实现了io.Reader接口(File支持Read方法),所以fin可以直接转换为io.Reader,返回值和io.ReadFile相同。


第三种方式同样先使用os.Open打开文件,然后使用File的Read方法读取内容,如下:

fin, err := os.Open("a.txt")if err != nil {panic(err)}defer fin.Close()buf := make([]byte, 11)_, err = fin.Read(buf)if err != nil {panic(err)}fmt.Println(string(buf))

与前两种方式不同,该种方式需要自己管理内存。该种方式只需引入os包。


第四种方式同样需要先使用os.Open打开文件,然后创建一个bufio.Reader对象,通过bufio.Reader对象去读取内容,如下:

fin, err := os.Open("a.txt")if err != nil {panic(err)}defer fin.Close()rd := bufio.NewReader(fin)buf := make([]byte, 11)_, err = rd.Read(buf)if err != nil {panic(err)}fmt.Println(string(buf))

该种方式亦需要自己管理内存。表面上看,该种方式多此一举,但实际并非如此,因为bufio.Reader提供了更丰富的处理方法,如ReadLine,ReadString,ReadBytes等,可以减少开发工作。

0 0
原创粉丝点击