Golang read text file

Read Text File in Golang

1. read line by line

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
func main() {
f, err := os.Open("demo.txt")
if err != nil {
fmt.Println("err:", err)
return
}
defer f.Close()

content, err := readTxt(f)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println("content:", content)
}

func readTxt(r io.Reader) ([]string, error) {
reader := bufio.NewReader(r)

l := make([]string, 0, 64)

// 按行读取
for {
line, _, err := reader.ReadLine()
if err != nil {
if err == io.EOF {
break
} else {
return nil, err
}
}

l = append(l, strings.Trim(string(line), " "))
}

return l, nil
}

2. read all content at once

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func main() {
f, err := os.Open("demo.txt")
if err != nil {
fmt.Println("err:", err)
return
}
defer f.Close()

content, err := readAllContent(f)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println("content:", content)
}

func readAllContent(r io.Reader) ([]string, error) {
var b = make([]byte, 4096)
_, err := r.Read(b)
if err != nil {
return nil, err
}

l := strings.Split(string(b), "\r\n")
return l, nil
}