为了账号安全,请及时绑定邮箱和手机立即绑定

使用Go编程语言读取和使用外部文件

使用Go编程语言读取和使用外部文件

Go
温温酱 2021-04-25 10:14:20
我通过做一些Project Euler问题来学习Go编程语言。我现在在[问题13](http://projecteuler.net/problem=13)上。它包含一个带有100行50位数字的外部文件。我的问题是:如何将该文件读入Go程序并使用它?Go有阅读线功能吗?我已经阅读了有关io和ioutil软件包的信息,而我所能想到的就是读取文件并进行打印。但是,我不确定如何使用该文件...可以将其分配给变量吗?是否有readlines功能等?任何帮助将不胜感激。这是我到目前为止的内容:package mainimport "fmt"import "io/ioutil"func main() {        fmt.Println(ioutil.ReadFile("one-hundred_50.txt"))}
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

有多种方法可以逐行读取文件,但是ioutil.ReadFile确实是一个不错的开始。当然,您可以将其分配给变量。查看ReadFile的函数签名,看看它如何返回字节片和错误。分配两个;检查错误是否为nil。如果错误不是nil,则打印错误,这样您就可以看到问题所在。然后,一旦将字节包含在变量中,请尝试逐行将其吐出。尝试使用bytes.Split,或更简单的方法是将其转换为字符串,然后使用strings.Split。


查看完整回答
反对 回复 2021-05-10
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

自从提出并回答了这个问题以来,bufio软件包已更新(对于Go 1.1),也许现在有了更好的解决方案(并不是所有这些都不好)。


bufio软件包中的Scanner类型使此操作非常容易:


func main() {

    f, e := os.Open("one-hundred_50.txt")

    if e != nil {

        // error opening file, handle it

    }

    s := bufio.NewScanner(f)

    for s.Scan() {

        // scanner.Text() contains the current line

    }

    if e = s.Err(); e != nil {

        // error while scanning; no error at EOF

    }

}


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信