在Go(Golang)中把文件读入一个变量中的方法

297 阅读1分钟

概述

在golang中,有多种方法可以将文件读入变量。以下是其中的一些方法

  • 使用ioutil包提供的ReadFile函数

  • 使用os.Open,然后使用bytes.Buffer

  • 使用os.Open,然后使用strings.Builder

.另外,注意只有在你读取一个小文件时,将整个文件读入一个变量才有意义。如果文件很大,那么逐行读取才有意义。关于这一点,请参考这篇文章。

golangbyexample.com/read-large-…

注意:在尝试本教程中的例子之前,请在你要运行程序的位置创建一个名为test.png的文件。

使用ioutil软件包提供的ReadFile函数

golang.org/pkg/io/iout…

以下是相同的程序

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

golang.org/pkg/strings…

下面是同样的程序

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