Go 文件读写

Go 文件读写

  • 当文件较小(KB 级别)时,ioutil > bufio > os。
  • 当文件大小比较常规(MB 级别)时,三者差别不大,但 bufio 又是已经显现出来。
  • 当文件较大(GB 级别)时,bufio > os > ioutil。

os.File

文件不存在则创建,文件存在则将文件内容清空

// 文件不存在则创建,文件存在则将文件内容清空
file, err := os.Create(filePath)
defer func() {
    if file != nil {
        // 关闭文件
        file.Close()
    }
}()
if err != nil {
	return
}

以只读方式打开文件

// 以只读方式打开文件
file, err := os.Open(filePath)
defer func() {
    if file != nil {
        // 关闭文件
        file.Close()
    }
}()
if err != nil {
	return
}

以只读、只写、读写模式打开文件

// 以不同的模式打开文件
file,err := os.OpenFile(filePath, flag, perm)
defer func() {
    if file != nil {
        // 关闭文件
        file.Close()
    }
}()
if err != nil {
	return
}

flag:

模式含义
os.O_WRONLY只写
os.O_CREATE创建文件
os.O_RDONLY只读
os.O_RDWR读写
os.O_TRUNC清空
os.O_APPEND追加

perm 权限取值范围(0-7):

  • 0-没有任何权限
  • 1-执行权限,如果是可执行文件,是可以运行的
  • 2-写权限
  • 3-写权限与执行权限
  • 4-读权限
  • 5-读权限与执行权限
  • 6-读权限与写权限
  • 7-读权限、写权限、执行权限

常用组合

// 如果已经存在,则失败
os.O_WRONLY|os.O_CREATE|os.O_EXCL
// 如果已经存在,会覆盖写,不会清空原来的文件,而是从头直接覆盖写
os.O_WRONLY|os.O_CREATE
// 如果已经存在,则在尾部添加写
os.O_WRONLY|os.O_CREATE|os.O_APPEND

写入数据(字符串)

// 写入内容
_, err := file.WriteString("Hello Go!")
if err != nil {
    return 
}

写入数据([]Byte)

data := "我是数据\r\n"
_, err := file.Write([]byte(data))
if err != nil {
	return 
}

关闭文件

// 关闭文件
file.Close()

bufio

filePath := "1.txt"
// 文件不存在则创建,文件存在则将文件内容清空
file, err := os.Create(filePath)
defer func() {
    if file != nil {
        // 关闭文件
        file.Close()
    }
}()
if err != nil {
    panic(err)
}
// 使用 bufio 基于缓存操作io流
// 需要传入 一个 io 接口包下的 Writer 接口实现类 而 file 实现了该 方法
writer := bufio.NewWriter(file)
// 写入String
writer.WriteString(" 写入缓存字符串内容")
data := "写入缓冲[]byte"
// 写入[]byte
writer.Write([]byte(data))
// 写入byte
writer.WriteByte(1)
// 写入rune
writer.WriteRune(1)
//需要将缓存中的数据刷新到硬盘上
writer.Flush()

ioutil

err := ioutil.WriteFile(filePath, []byte("今天天气真好"), os.ModePerm)
if err != nil {
    return
}

参考文档

https://www.jb51.net/article/244570.htm

https://www.jb51.net/article/254073.htm

http://t.zoukankan.com/landv-p-13140156.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值