Golang-读取文件

Go读取文件一般有两种方式,一种方式是采用os包下的os.open函数进行流式读取,另一种方式是采用ioutil包的ioutil.ReadFile函数进行读取,二者的区别在于后者会一次性将文件内容全部加载到内存中。

由于os.open函数会返回一个文件对象,所以需要配合bufio或者ioutil使用。

以下是具体使用的实例:

package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
)

func main() {
    
    
	file := "H:\\go\\main\\1.txt"
	ReadByIoUntil(file)
	ReadByOs(file)
}

func ReadByIoUntil(filename string) {
    
    
	fmt.Println("-------通过ioutil.ReadFile读取---------")
	data, err := ioutil.ReadFile(filename)
	if err != nil {
    
    
		fmt.Fprintf(os.Stderr, "error reading file: %v\n", err)
	}
	fmt.Println(string(data))
}

func ReadByOs(filename string) {
    
    
	fmt.Println("-------通过os.Open读取---------")
	f, err := os.Open(filename)
	if err != nil {
    
    
		fmt.Fprintf(os.Stderr, "error reading file: %v\n", err)
	}

	//采用bufio读取文件内容
	input := bufio.NewScanner(f)
	for input.Scan() {
    
    
		fmt.Println(input.Text())
	}

	//采用ioutil读取文件内容,由于流是一次性的,所以上面的代码输出后,下面的Println将不再打印任何东西
	contents, err := ioutil.ReadAll(f)
	fmt.Println(contents)

	f.Close()
}

猜你喜欢

转载自blog.csdn.net/mryang125/article/details/114798592