如何在GO中读取/扫描.txt文件
txt文件有许多行,每行包含一个单词。因此,我打开文件并将其传递给阅读器:如何在GO中读取/扫描.txt文件,go,Go,txt文件有许多行,每行包含一个单词。因此,我打开文件并将其传递给阅读器: file, err := os.Open("file.txt") check(err) reader := bufio.NewReader(file) 现在我想将每一行存储在一段字符串中。我相信我需要使用ReadBytes、ReadString、ReadLine或on的扫描函数。如能就如何实施这一点提供任何建议,我们将不胜感激。谢谢。将r作为*bufio.Reader的一个实例,将myList作为一段字符串,这样就可以
file, err := os.Open("file.txt")
check(err)
reader := bufio.NewReader(file)
现在我想将每一行存储在一段字符串中。我相信我需要使用ReadBytes、ReadString、ReadLine或on的扫描函数。如能就如何实施这一点提供任何建议,我们将不胜感激。谢谢。将
r
作为*bufio.Reader
的一个实例,将myList
作为一段字符串,这样就可以循环并读取行,直到下线
for {
line, err := r.ReadBytes('\n')
if err != nil {
break
}
myList = append(myList, string(line))
}
将
r
作为*bufio.Reader
的一个实例,将myList
作为一段字符串,这样就可以循环并读取行,直到下线
for {
line, err := r.ReadBytes('\n')
if err != nil {
break
}
myList = append(myList, string(line))
}
您可以使用
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))
}
}
您可以使用
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))
}
}
您发布的代码是否会继续读取文件的第一行并以无限循环的方式将其附加到列表中?不,这不是reader的工作方式。它要做的是在每次
迭代过程中,读取一行并将其附加到myList
数组中。当没有更多的行要读取时,Reader将返回一个错误,这将中断循环。myList是字符串的一部分吗?当我尝试使用myList作为字符串片段的代码时,我遇到了一个错误:无法将myList(type[]string)转换为stringYes类型。在哪一行上出现错误?如果要将[]字符串
转换为字符串
,可能需要执行联接myList=append(myList,string(line)
my行声明myList
看起来像myList:=make([]字符串,0)
您发布的代码是否会继续读取文件的第1行并以无限循环的方式将其附加到列表中?不,这不是reader的工作方式。它将在每次迭代过程中读取一行并将其附加到myList
数组中。当没有更多行可读取时,reader将返回一个错误,这将导致将中断循环。myList是字符串片段吗?当我尝试使用myList作为字符串片段的代码时,我遇到了一个错误:无法将myList(类型[]字符串)转换为类型stringYes。行是什么?如果要转换[]字符串
到字符串
,可能要执行联接?myList=append(myList,string(line)
声明myList的我的行
看起来像myList:=make([]字符串,0)
这完全符合我的要求,但我不知道如何访问特定的行。是否有方法将每行索引为单个整数?len()
返回以字节为单位的大小,因此我不知道如何找到每行的起始位置。@user2802602您可以通过索引行来访问特定行
给出了第20行。这完全符合我的要求,但我不知道如何访问特定的行。是否有方法将每行索引为单个整数?len()
返回以字节为单位的大小,因此我不知道如何找到每行的起始位置。@user2802602您可以通过索引行来访问特定的行。行[21]
给出了第20行。