Go语言NewReader读取文件

Go语言NewReader读取文件教程

Golang 中,读取 文件 有四种方法,分别为:使用 ioutil.ReadFile 读取文件,使用 file.Read 读取文件,使用 bufio.NewReader 读取文件,使用 ioutil.ReadAll 读取文件。

NewReader读取文件

语法

r := bufio.NewReader(file) n, err := r.Read(buf)

参数

参数 描述
file 要读取的文件句柄。
buf 读取的数据存放的缓冲区。

返回值

返回值 描述
n 读取到的长度。
err 读取失败,则返回错误信息。

说明

使用 NewReader 读取文件时,首先,我们需要打开文件,接着, 使用打开的文件返回的文件句柄当作 函数参数 传入 NewReader。

最后,我们使用 NewReader 返回的 reader 对象调用 Read 来读取文件。文件读取结束的标志是返回的 n 等于 0,因此,如果我们需要读取整个文件内容,那么我们需要使用 for 循环 不停的读取文件,直到 n 等于 0。

案例

NewReader读取文件

使用 NewReader 读取文件

package main import ( "fmt" "io" "os" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") fileName := "C:/haicoder.txt" file, err := os.Open(fileName) if err != nil{ fmt.Println("Read file err, err =", err) return } defer file.Close() var chunk []byte buf := make([]byte, 1024) for{ n, err := NewReader(buf) if err != nil && err != io.EOF{ fmt.Println("read buf fail", err) return } //说明读取结束 if n == 0 { break } //读取到最终的缓冲区中 chunk = append(chunk, buf[:n]...) } fmt.Println("File Content =", string(chunk)) }

程序运行后,控制台输出如下:

07_golang NewReader读取文件.png

首先,我们使用 os.Open 打开文件,如果文件打开成功,那么就使用 defer 来关闭文件。接着,使用打开的文件返回的文件句柄当作函数参数传入 NewReader,并使用 NewReader 返回的 reader 对象调用 Read 来读取文件。

最会,我们使用 for循环来不停的读取文件,直到出现错误或者读取到的文件内容的长度为 0,说明读取结束,结束循环。

每执行一次循环后,我们将读取到的内容追加到缓冲区,最后,我们打印整个缓冲区的内容,就是读取到的文件内容。

NewReader读取文件总结

r := bufio.NewReader(file) n, err := r.Read(buf)

使用 NewReader 读取文件时,首先,我们需要打开文件,接着, 使用打开的文件返回的文件句柄当作函数参数传入 NewReader。

最后,我们使用 NewReader 返回的 reader 对象调用 Read 来读取文件。文件读取结束的标志是返回的 n 等于 0,因此,如果我们需要读取整个文件内容,那么我们需要使用 for 循环不停的读取文件,直到 n 等于 0。