Go语言文件操作
Posted gyyyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言文件操作相关的知识,希望对你有一定的参考价值。
1、使用os包读取文件的内容
// 自定义每次读取数据长度 func ReadFileFromOS() { file, err := os.Open("./abc") if err != nil { fmt.Printf("open file fail,err: %+v ", err) return } // 关闭文件 defer file.Close() // 定义一个长度为10的切片 b := make([]byte, 10) for { n, err := file.Read(b) // _, err := file.Read(b) if err == io.EOF { // EOF表示end of file,文件读取完毕 return } if err != nil { fmt.Printf("read file fail,err: %+v ", err) return } // 打印读出的内容 // 将切片转化为string,然后打印 fmt.Printf("读取字节数:%d ", n) fmt.Print(string(b)) } }
在方法file.Read(b)中,入口参数是一个切片,切片的长度就是每次从文件中读取数据打长度,当文件中剩余内容小于这个切片的长度的时候,就读文件的剩下的内容,而不是切片的长度那样多的内容。当文件读到最后的时候,file.Read()返回一个文件结束信息,io.EOF
2、使用bufio包读取文件内容
bufio也是一个可以用来读取文件的包
// 使用bufio包读文件 func ReadFileFromBufio() { file, err := os.Open("./abc") if err != nil { fmt.Printf("open file fail,err: %+v ", err) return } // 关闭文件 defer file.Close() newReader := bufio.NewReader(file) for { // 使用函数ReadString(‘ ‘)表示每次读取一个字符串,遇到‘ ‘表示读取当前字符串结束 line, err := newReader.ReadString(‘ ‘) if err == io.EOF { return } if err != nil { fmt.Printf("read file fail,err: %+v ", err) } fmt.Print(line) } }
使用这种方法就是创建一个Reader变量,用来读取文件内容,Reader包含的方法包括ReadLine,ReadString等等,同样的读到文件最后会返回文件结束符io.EOF
3、使用io/ioutil包一次性读取文件内容,这个方法比较简单
// 使用io/ioutil包读取文件内容 func ReadFileFromIOutil() { // content是一个byte类型的切片 content, err := ioutil.ReadFile("./abc") if err != nil { fmt.Printf("read file fail,err: %+v", err) return } fmt.Println(string(content)) }
它可以一次性读取文件的所有内容,而不需要使用循环来读取
以上是关于Go语言文件操作的主要内容,如果未能解决你的问题,请参考以下文章
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础