如何将整个文件读入字符串变量

新手上路,请多包涵

我有很多小文件,我不想逐行阅读它们。

Go 中是否有一个函数可以将整个文件读入一个字符串变量?

原文由 WoooHaaaa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 373
2 个回答

使用 ioutil.ReadFile

 func ReadFile(filename string) ([]byte, error)

ReadFile 读取文件名命名的文件并返回内容。成功的调用返回 err == nil,而不是 err == EOF。因为 ReadFile 读取整个文件,所以它不会将 Read 中的 EOF 视为要报告的错误。

您将得到 []byte 而不是 string 。如果 确实 需要,可以转换它:

 s := string(buf)

原文由 zzzz 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您只希望内容为 string ,那么简单的解决方案是使用 ReadFile 中的函数 io/ioutil 此函数返回 bytes 的切片,您可以轻松地将其转换为 string

Go 1.16 或更高版本

对于此示例,将 ioutil os

 package main

import (
    "fmt"
    "os"
)

func main() {
    b, err := os.ReadFile("file.txt") // just pass the file name
    if err != nil {
        fmt.Print(err)
    }

    fmt.Println(b) // print the content as 'bytes'

    str := string(b) // convert content to a 'string'

    fmt.Println(str) // print the content as a 'string'
}

Go 1.15 或更早版本

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    b, err := ioutil.ReadFile("file.txt") // just pass the file name
    if err != nil {
        fmt.Print(err)
    }

    fmt.Println(b) // print the content as 'bytes'

    str := string(b) // convert content to a 'string'

    fmt.Println(str) // print the content as a 'string'
}

原文由 openwonk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题