带缓冲的 Reader 读文件 | 学习笔记

简介: 快速学习带缓冲的 Reader 读文件

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程带缓冲的 Reader 读文件】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9727


带缓冲的 Reader 读文件

 

内容介绍

一、简介

二、代码实现

 

一、简介

读取文件的内容并显示在终端(现在主要使用的是带缓冲区的方式,往往可以提高效率,特别适合读取比较大的文件),在这里会使用 os:Open,file:Close,bufio:NewReader():reader.ReadString 等函数和方法。

打开文件,第一个案例,读取文件操作应用实例。

D:woproject\src\go_code>go run test.9o

package main

import

fnt

"bufio"

"io"

Func main

file. err := os.Open<"C:/ny.txt")

if err

fnt.PrintInC'opon

return

 

二、代码实现

新建文件夹 file,建立包,打开文件:

package main

import

"fmt"

"os"

func main()

//打开文件

//概念说明:file 的叫法

//1. file 叫 file对象

//2. file 叫 file指针

//3.file 叫 file 文件句柄

file,err:=os.Open("d:/test.txt") if err l= nil t

fmt.Println("open file err=",err)

//当函数退出时,要及时的关闭file

defer file.close()

//要及时关闭 file 句柄,否则句柄会有内存泄漏.

在bifio包里,有一个函数,查看 reader 源代码,

//创建一个 Reader 是带缓冲的

type Reader struct//reader 结构体,里面会缓冲,默认大小为4096

buf[]byte

rd io.Reader // reader provided by the client

r, wint //buf read and write positions

err  error

lastByte int

lastRuneSize int

const

defaultBufsize = 4096//默认的缓冲区为4096个字节

reader := bufio.NewReader(file)

如果有缓冲,好处是:它并不是一次性的读完内存,而是读一部分处理一部分,这样可以处理大的文件,有了 reader,此时可以循环读取文件内容。

//循环的读取文件的内容

for//既然是读取那就是for循环

reader . Readstring('\n')//通过 reader 去读取文件的内容,读到一个换行就结束。\n代表换行符。

//读的时候会返回两个结果:str 和 err,读取的内容会放在str变量,把错误信息放在err变量。

此时做出判断:

if err == nil //表示出错

if err == io.EOF // io. EOF表示文件的末尾

break//结束读取

//读取过后,输出内容

fmt . Print(str)

fmt . Println("文件读取结束" )

此时代码已经写完,运行。

此时出现问题:不知道 io 包是什么,需要把 io 包引进去。文件就读取完成了。

package main

import

"fmt"

"os"

"io"

此时进行读取。可以看到读取内容如下:

image.png此时读取完成。

相关文章
|
2月前
从文件中读取一行
从文件中读取一行。
30 5
|
5月前
|
Java
IO流操作-------File类、输入流和输出流(二)
这篇文章介绍了Java中IO流操作的基本概念和使用,包括字节流和字符流的读取与写入,以及如何使用缓冲流提高文件读写效率和实现文件复制的方法。
IO流操作-------File类、输入流和输出流(二)
|
4月前
同步读取文件
同步读取文件
57 0
|
8月前
|
存储 弹性计算 运维
读取文件
【4月更文挑战第29天】
78 2
|
8月前
|
Linux Windows
写入文件
写入文件。
44 2
|
8月前
|
移动开发 Java Linux
IO流:字节输出流FileOutputStream的超详细用法
IO流:字节输出流FileOutputStream的超详细用法
101 0
|
XML C# 数据格式
C#读取写入文件的三种方式
最近对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试,例子在文末,可下载。
97 0
|
网络协议 Java
FileChannel 文件流的简单使用
FileChannel 文件流的简单使用
183 0
|
存储 分布式计算 Java
记一次InputStream流读取不完整留下的惨痛教训
记一次InputStream流读取不完整留下的惨痛教训
391 0
记一次InputStream流读取不完整留下的惨痛教训