如何在 Golang 中将文件读入字符串?

go programmingserver side programmingprogramming

要将文件读入字符串,我们需要使用 Go 标准库提供的 io/ioutil 包。

io/ioutil 包中,有一个名为 ReadFile() 的函数,用于打开文件并将其内容转换为字节切片。如果由于某种原因无法执行此操作,它也会返回错误。

以下是 ReadLine() 函数的语法。

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

需要注意的是,如果上述函数调用成功,它将返回 err == nil,而不是err == EOF。确实如此,因为上述函数读取了整个文件,所以它不会将 Read 中的 EOF 视为错误。

我们将得到一个字节切片,即 []byte,而不是字符串。 为了将其转换为字符串,我们需要进行基本的类型转换。

首先考虑这样一种情况:我们有一个名为 gocode.txt 的文件,其中包含以下内容。

This file contains some random text.

现在,让我们看看打开此文件并将其转换为字符串的代码。

示例 1

考虑下面的代码。

package main

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

func main() {
   fileContent, err := ioutil.ReadFile("gocode.txt")
   if err != nil {
      log.Fatal(err)
   }

   // 将[]byte 转换为字符串
   text := string(fileContent)
   fmt.Println(text)
}

输出

如果我们在上面的代码上运行命令go run main.go,那么我们将在终端中得到以下输出。

This file contains some random text.

如果出于某种原因,我们将文件名更改为 gocode.txt 以外的其他名称,则代码将产生错误。

示例 2

考虑下面显示的代码。

package main

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

func main() {
   fileContent, err := ioutil.ReadFile("gocode.txt")
   if err != nil {
      log.Fatal(err)
   }

   // 将 []byte 转换为字符串
   text := string(fileContent)
   fmt.Println(text)
}

输出

如果我们在上述代码上运行命令 go run main.go,我们将在终端中得到以下输出。

2021/10/11 12:05:46 open gocode.txt: no such file or directory
exit status 1

相关文章