当前位置:首页 > 科技  > 软件

Golang 中的 bufio 包详解之Bufio.Writer

来源: 责编: 时间:2023-10-08 07:05:35 380观看
导读使用 Golang 进行写入文件操作时,如果每次都调用系统函数写入磁盘,在很多场景下都会影响程序的性能。bufio 包中的 bufio.Writer 提供了带缓冲的写操作,进行写操作时,数据会先被写入到一个缓冲区中,当达到一定条件,比如流缓

wio28资讯网——每日最新资讯28at.com

使用 Golang 进行写入文件操作时,如果每次都调用系统函数写入磁盘,在很多场景下都会影响程序的性能。bufio 包中的 bufio.Writer 提供了带缓冲的写操作,进行写操作时,数据会先被写入到一个缓冲区中,当达到一定条件,比如流缓冲区满了或刷新缓冲区时,再调用系统函数写入磁盘。wio28资讯网——每日最新资讯28at.com

bufio.Writer

bufio.Writer 是一个带有缓冲区的 io.Writer 接口的实现,提供了一系列方法来帮助高效写入数据。通过对写入数据进行缓存,可以提高写入效率,同时减少系统调用次数,从而提高程序性能。结构体定义和对应的方法如下:wio28资讯网——每日最新资讯28at.com

type Writer struct {	err error	buf []byte	n   int	wr  io.Writer}

下面是 bufio.Writer 提供的一些主要方法:wio28资讯网——每日最新资讯28at.com

  • func (b *Writer) Write(p []byte) (nn int, err error),将字节切片 p 的内容写入缓存中。
  • func (b *Writer) WriteString(s string) (int, error),写入一个字符串,返回写入的字节数和可能发生的的错误。
  • func (b *Writer) WriteByte(c byte) error,写入单个字节。
  • func (b *Writer) WriteRune(r rune) (size int, err error),WriteRune写入一个unicode码值,返回写入的字节数和可能发生的错误。
  • func (b *Writer) Flush() error,将缓存中的所有数据写入底层的 io.Writer 对象中。
  • func (b *Writer) Available() int,返回缓存中还可以写入的字节数。
  • func (b *Writer) Buffered() int,返回缓存中已经写入但还没有被刷新到底层的 io.Writer 中的字节数。
  • func (b *Writer) Reset(w io.Writer),将缓存重置为空,并将底层的 io.Writer 对象设置为 w。
  • func (b *Writer) Size() int,返回底层缓冲区的字节数。

其他方法就不一一说明了,最好自己去看去使用去体会。wio28资讯网——每日最新资讯28at.com

使用示例

简单使用示例如下:wio28资讯网——每日最新资讯28at.com

package mainimport (	"bufio"	"fmt"	"os")func main() {	file, err := os.Create(" file.txt")	if err != nil {		fmt.Println(err)		return	}	defer file.Close()	writer := bufio.NewWriter(file)	writer.WriteString("路多辛的所思所想!/n")	writer.Flush()}

使用 bufio.Writer 写入了字符串 "路多辛的所思所想!",通过实例化一个 bufio.Writer 对象并调用该对象的 WriteString 方法来完成写入,最后使用 Flush 方法将缓存中的数据刷新到底层的 io.Writer 对象中。wio28资讯网——每日最新资讯28at.com

小结

bufio.Writer 提供了一个带有缓冲区的 io.Writer 接口的实现,可以减少系统调用的次数,提高写入性能。wio28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12317-0.htmlGolang 中的 bufio 包详解之Bufio.Writer

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 玩转SpringBoot—启动源码及外部化配置

下一篇: 深入探索FastAPI单元测试:使用TestClient轻松测试你的API

标签:
  • 热门焦点
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein“利用市场支配力量强迫服装厂商与之签订独家
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
  • 引领旗舰级影像能力向中端机普及 OPPO K11 系列发布 1799 元起

    7月25日,OPPO正式发布K系列新品—— OPPO K11 。此次 K11 在中端手机市场长期被忽视的影像板块发力,突破性地搭载索尼 IMX890 旗舰大底主摄,支持 OIS
  • 2021中国国际消费电子博览会与青岛国际软件融合创新博览会新闻发布会隆重举行

    9月18日,2021中国国际消费电子博览会与青岛国际软件融合创新博览会新闻发布会在青岛国际新闻中心隆重举行。发布会上青岛市政府领导联袂出席,对本次双展会情
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top