golang bufio包中的Write方法分析

本文探讨了Golang的bufio包中的Write方法,分析了如何实现带缓冲的I/O操作。通过对比无缓冲的Write方法,指出错误使用带缓冲Write方法可能导致数据无法写入文件的问题。文章解释了Write方法的内部逻辑,包括数据长度与缓冲区大小的关系,以及何时直接写入文件或拷贝到缓冲区。最后,强调了在必要时调用Flush()方法以确保数据正确写入。
摘要由CSDN通过智能技术生成

bufio包实现了带缓冲的I/O,它封装了io.Reader和io.Writer对象,然后创建了另外一种对象(Reader或Writer)实现了相同的接口,但是增加了缓冲功能。
首先来看没有缓冲功能的Write(os包中)方法,它会将数据直接写到文件中。

package main

import (
    "os"
    "fmt"
)

func main() {
    file, err := os.OpenFile("a.txt", os.O_CREATE|os.O_RDWR, 0666)
    if err != nil {
        fmt.Println(err)
    }
    defer file.Close()

    content := []byte("hello world!")
    if _, err = file.Write(content); err 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值