Golang 如何把一个文件读成一个字符串
为了把文件读成字符串,我们需要利用Go的标准库提供的io/ioutil包。
在 io/ioutil 包里面,有一个叫做 ReadFile() 的函数,它用来打开一个文件,然后把它的内容转换成一个字节片,如果由于某种原因,它不能做到这一点,那么它也会返回一个错误。
下面是 ReadLine() 函数的语法。
func ReadFile(filename string) ([]byte, error)
需要注意的是,如果上述函数调用成功,那么它将返回 err == nil ,而不是 err == EOF。 是这样的,因为上述函数读取了整个文件,它不会把来自Read的EOF当作一个错误。
我们将得到一个字节片,即 [ ] 字节 ,而不是一个字符串作为结果,为了把它转换成一个字符串,我们需要做基本的类型转换。
让我们首先考虑一个案例,我们有一个名为 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)
}
// Convert []byte to string
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)
}
// Convert []byte to string
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