Go语言NewReader读取文件教程
在 中,读取 有四种方法,分别为:使用 读取文件,使用 读取文件,使用 bufio.NewReader 读取文件,使用 读取文件。
NewReader读取文件
语法
r := bufio.NewReader(file) n, err := r.Read(buf)
参数
参数 | 描述 |
---|---|
file | 要读取的文件句柄。 |
buf | 读取的数据存放的缓冲区。 |
返回值
返回值 | 描述 |
---|---|
n | 读取到的长度。 |
err | 读取失败,则返回错误信息。 |
说明
使用 NewReader 读取文件时,首先,我们需要打开文件,接着, 使用打开的文件返回的文件句柄当作 传入 NewReader。
最后,我们使用 NewReader 返回的 reader 对象调用 Read 来读取文件。文件读取结束的标志是返回的 n 等于 0,因此,如果我们需要读取整个文件内容,那么我们需要使用 不停的读取文件,直到 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)) }
程序运行后,控制台输出如下:
首先,我们使用 os.Open 打开文件,如果文件打开成功,那么就使用 来关闭文件。接着,使用打开的文件返回的文件句柄当作函数参数传入 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。