工作中时不时需要读取文本,文本文件是最常见的文件类型。

本文将从逐行、逐个单词和逐个字符三个方法读取文件:

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

其实还有更多读取文本文件的方法,比如通过逗号读取、读取特定数据量的文本,这些方法留到后文再作介绍