概述
在golang中,有多种方法可以将文件读入变量。以下是其中的一些方法
-
使用ioutil包提供的ReadFile函数
-
使用os.Open,然后使用bytes.Buffer
-
使用os.Open,然后使用strings.Builder
.另外,注意只有在你读取一个小文件时,将整个文件读入一个变量才有意义。如果文件很大,那么逐行读取才有意义。关于这一点,请参考这篇文章。
golangbyexample.com/read-large-…
注意:在尝试本教程中的例子之前,请在你要运行程序的位置创建一个名为test.png的文件。
使用ioutil软件包提供的ReadFile函数
以下是相同的程序
package main
import (
"fmt"
"io/ioutil"
)
func main() {
fileBytes, err := ioutil.ReadFile("test.png")
if err != nil {
panic(err)
}
fileString := string(fileBytes)
fmt.Println(fileString)
}
输出
Some Garbage Output depending upon the file
使用os.Open,然后使用bytes.Buffer
下面是同样的程序
package main
import (
"bytes"
"fmt"
"log"
"os"
)
func main() {
file, err := os.Open("test.png")
if err != nil {
log.Fatalf("Error while opening file. Err: %s", err)
}
defer file.Close()
fileBuffer := new(bytes.Buffer)
fileBuffer.ReadFrom(file)
fileString := fileBuffer.String()
fmt.Print(fileString)
}
输出
Some Garbage Output depending upon the file
使用os.Open,然后使用strings.Builder
下面是同样的程序
package main
import (
"bytes"
"fmt"
"log"
"os"
)
func main() {
file, err := os.Open("test.png")
if err != nil {
log.Fatalf("Error while opening file. Err: %s", err)
}
defer file.Close()
fileBuffer := new(bytes.Buffer)
fileBuffer.ReadFrom(file)
fileString := fileBuffer.String()
fmt.Print(fileString)
}
输出
Some Garbage Output depending upon the file