如何在GO中读取/扫描.txt文件

时间:2013-09-24 01:39:05

标签: go

.txt文件有许多行,每行包含一个单词。所以我打开文件并将其传递给读者:

file, err := os.Open("file.txt")
check(err)
reader := bufio.NewReader(file)

现在我想将每一行存储在一个字符串片段中。我相信我需要使用ReadBytes,ReadString,ReadLine或Scan功能。任何关于如何实现这一点的建议将不胜感激。感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用ioutil.ReadFile()将所有行读入字节切片,然后在结果上调用split

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "strings"
)

func main() {
    data, err := ioutil.ReadFile("/etc/passwd")
    if err != nil {
        log.Fatal(err)
    }
    lines := strings.Split(string(data), "\n")

    for _, line := range lines {
        fmt.Println("line:", string(line))
    }
}

答案 1 :(得分:1)

r作为*bufio.Reader的实例,将myList作为一个字符串切片,而不是一个可以循环读取行直到EOL。

   for {
        line, err := r.ReadBytes('\n')
        if err != nil {
            break
        }
        myList = append(myList, string(line))
   }