工作中时不时需要读取文本,文本文件是最常见的文件类型。
本文将从逐行、逐个单词和逐个字符三个方法读取文件:
byLine.gobyWord.gobyCharacter.go
1 逐行读取文本文件
逐行读取文件是最为常见的文本文件,也是最为简单的方式。首先我们需要导入几个常见的包:
- bufio:缓存区读写文件
- flag:命令行参数解析
代码解释:
bufio.NewReader()bufio.ReadString()err == io.EOFerr != nil
main()byLine.go
$ go run byLine.go
usage: byLine <file1> [<file2> ...]
test.txt
这是第一行
我是第二行
运行如下命令后,结果为:
$ go run byLine.go test.txt
这是第一行
我是第二行
cat test.txt
$ cat test.txt
这是第一行
我是第二行
2 逐个单词读取文本文件
代码解释:
byLine.gobufioscanner := bufio.NewScanner(file)scanner.Split(bufio.ScanWords)
测试代码
test.txt
Hello World
1 2 3
运行代码,结果显示:
$ go run byWord.go test.txt
Hello
World
1
2
3
3 逐个字符读取文本文件
byCharacter.go
运行测试用例得出的最后结果为:
$ go run byCharacter.go test.txt
H
e
l
l
o
W
o
r
l
d
总结
bufio
byLine.gobyWord.gobyCharacter.go
其实还有更多读取文本文件的方法,比如通过逗号读取、读取特定数据量的文本,这些方法留到后文再作介绍