GO 文件读取常用的方法
2022/4/10 6:16:58
本文主要是介绍GO 文件读取常用的方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
GO 文件读取常用的方法
方式1: 一行一行的方式读取
其中常用的方法就有:ReadString,ReadLine,ReadBytes
ReadLine 返回单个行,不包括行尾字节,就是说,返回的内容不包括\n或者\r\n,返回的类型为[]byte
ReadString('\n') 以分隔字符方式读取,遇到传入的分割字符时就返回结果,返回的结果包含分隔字符本身,返回的类型为string,比如传入\n,代码遇到\n字符就返回,而文件行尾都是以\n结尾,所以ReadString('\n')就实现了分行读取
ReadBytes('\n') 和ReadString方法差不多,只是结果以[]byte类型返回数据
文件读取需要注意点:
记得处理完后关闭文件,以防止内存泄露,占用操作系统文件句柄数
文件读取结束后返回的err类型是io.EOF,可以使用这个来跳出循环
方式一源码例子:
package main import ( "bufio" "fmt" "io" "os" ) func main() { // 读取一个文件的内容 file, err := os.Open("./abc.txt") if err != nil { fmt.Println("open file err:", err.Error()) return } // 处理结束后关闭文件 defer file.Close() // 使用bufio读取 r := bufio.NewReader(file) for { // 分行读取文件 ReadLine返回单个行,不包括行尾字节(\n 或 \r\n) //data, _, err := r.ReadLine() // 以分隔符形式读取,比如此处设置的分割符是\n,则遇到\n就返回,且包括\n本身 直接返回字符串 data, err := r.ReadString('\n') // 打印出内容 fmt.Printf("%v", string(data)) fmt.Println("-------------------------") // 以分隔符形式读取,比如此处设置的分割符是\n,则遇到\n就返回,且包括\n本身 直接返回字节数数组 // data, err := r.ReadBytes('\n') // 读取到末尾退出 if err == io.EOF { break } if err != nil { fmt.Println("read err", err.Error()) break } // 打印出内容 fmt.Printf("%v", string(data)) } }
方式2: 一次性读取
一次性读取适合读取内容比较小的文件,大文件读取建议使用第一种方式
一次性读取可以使用ioutil.ReadFile方法,次方法不需要关闭文件,源码例子如下:
package main import ( "fmt" "io/ioutil" ) func main() { // 使用ioutil一次性读取文件 data, err := ioutil.ReadFile("./abc.txt") if err != nil { fmt.Println("read file err:", err.Error()) return } // 打印文件内容 fmt.Println(string(data)) }
原文链接:https://blog.csdn.net/weixin_39015119/article/details/103533432
这篇关于GO 文件读取常用的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享