Go语言 文件操作的 2个读文件案例 (Golang经典编程案例)

文件在程序中是以流的形式来操作的。
Go语言 文件操作的 2个读文件案例 (Golang经典编程案例)_第1张图片

案例1:读取文件的内容并显示在终端(带缓冲区的方式)。

package main

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

func main() {
	//打开文件
	file, err := os.Open("c:/amyfile/defer.txt")
	if err != nil{
		fmt.Println("open file err",err)
	}
	//输出一下文件
	//fmt.Printf("file=%v \n",&file)
	//当函数退出时,要及时关闭file,否则会有内存泄漏
	defer file.Close()

	//创建一个 *Reader,带缓冲的,默认缓冲区大小为4096
	reader := bufio.NewReader(file)
	//循环的读取文件的内容
	for{
		str, err := reader.ReadString('\n') //读到一个换行就结束
		if err == io.EOF{ //io.EOF表示文件的末尾
			break
		}
		//输出文件内容
		fmt.Print(str)
	}
	fmt.Println("文件读取结束...")
}

执行结果如下图,已把文件内容读取到终端:
Go语言 文件操作的 2个读文件案例 (Golang经典编程案例)_第2张图片

案例2:对于文件不大的情况,可以使用 ioutil 一次将整个文件读到内存中。代码如下:

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	//打开文件
	content, err := ioutil.ReadFile("c:/amyfile/defer.txt")
	if err != nil{
		fmt.Println("open file err",err)
	}
	//把读取道德文件内容显示到终端
	//不需要显式的Open和Close文件,因为这俩操作被封装到ReadFile函数内部
	fmt.Printf("%v",string(content))
}

执行结果如下图:
Go语言 文件操作的 2个读文件案例 (Golang经典编程案例)_第3张图片

你可能感兴趣的:(Go语言经典编程案例)