当前位置:首页 > 文章列表 > Golang > Go教程 > Golang文件写入追加方法教程

Golang文件写入追加方法教程

2026-01-27 14:22:13 0浏览 收藏

哈喽!今天心血来潮给大家带来了《Golang 文件写入与追加方法详解》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

使用os.OpenFile可灵活实现文件写入与追加,结合O_TRUNC覆盖或O_APPEND追加;ioutil.WriteFile(或os.WriteFile)适合一次性写入;bufio.Writer提升频繁写入性能。

如何用Golang实现文件写入和追加_Golang 文件写入与追加实践

在 Golang 中实现文件写入和追加操作非常直接,标准库 osioutil(在 Go 1.16 后推荐使用 os 替代)提供了足够的支持。下面介绍几种常用方式,涵盖创建新文件、覆盖写入以及内容追加的场景。

使用 os.OpenFile 进行写入和追加

os.OpenFile 是最灵活的方式,可以指定打开模式来控制是覆盖还是追加。

写入文件(覆盖原有内容):

package main

import (
    "log"
    "os"
)

func main() {
    file, err := os.OpenFile("example.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    content := "这是写入的内容\n"
    _, err = file.WriteString(content)
    if err != nil {
        log.Fatal(err)
    }
}

追加内容到文件末尾:

file, err := os.OpenFile("example.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
    log.Fatal(err)
}
defer file.Close()

content := "这是追加的内容\n"
_, err = file.WriteString(content)
if err != nil {
    log.Fatal(err)
}

关键点说明:

  • os.O_CREATE:文件不存在时自动创建
  • os.O_WRONLY:以只写模式打开
  • os.O_TRUNC:打开时清空文件(用于覆盖写入)
  • os.O_APPEND:每次写入自动追加到文件末尾

使用 ioutil.WriteFile 简单写入

适合一次性写入整个内容,会自动创建或覆盖文件。

import (
    "io/ioutil"
)

err := ioutil.WriteFile("example.txt", []byte("一次性写入内容\n"), 0644)
if err != nil {
    log.Fatal(err)
}

注意:Go 1.16 起推荐使用 os.WriteFile 替代 ioutil.WriteFile。

err := os.WriteFile("example.txt", []byte("新内容\n"), 0644)
if err != nil {
    log.Fatal(err)
}

使用 bufio 提高写入效率

当需要频繁写入多行内容时,使用 bufio.Writer 可减少系统调用,提升性能。

file, err := os.OpenFile("example.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
    log.Fatal(err)
}
defer file.Close()

writer := bufio.NewWriter(file)
lines := []string{"行1\n", "行2\n", "行3\n"}

for _, line := range lines {
    _, err := writer.WriteString(line)
    if err != nil {
        log.Fatal(err)
    }
}

// 别忘了刷新缓冲区
err = writer.Flush()
if err != nil {
    log.Fatal(err)
}

常见问题与注意事项

权限设置:第三个参数是文件权限,如 0644 表示所有者可读写,其他用户只读。

错误处理:每次操作后都应检查 err,避免静默失败。

关闭文件:使用 defer file.Close() 确保资源释放。

路径问题:相对路径基于运行目录,建议使用绝对路径或 filepath.Join 处理跨平台兼容。

基本上就这些。Golang 的文件操作简洁高效,掌握 OpenFile 的模式组合就能应对大多数写入和追加需求。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

Gosync.RWMutex读锁死锁问题解析Gosync.RWMutex读锁死锁问题解析
上一篇
Gosync.RWMutex读锁死锁问题解析
163邮箱登录入口及官网地址
下一篇
163邮箱登录入口及官网地址
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • HitPaw Watermark Remover:AI智能图片视频去水印工具下载与评测
    HitPaw Watermark Remover
    HitPaw Watermark Remover是一款基于AI技术的强大去水印软件,支持Windows和Mac系统。它能自动检测并移除图片及视频中的水印、Logo和多余对象,提供多种修复模式及批量处理功能,适用于社交媒体创作、商业营销及个人编辑等多种场景。
    5次使用
  • 美图抠图:AI智能在线抠图工具,支持一键批量处理与高清透明背景导出
    美图抠图
    美图抠图是美图秀秀推出的在线AI智能抠图工具,支持人像、商品等全品类自动识别。具备一键抠图、批量处理、换背景及画质修复功能,操作简单高效,适合电商、设计及个人用户快速生成高质量透明背景图片。
    9次使用
  • 易撰AI写作助手:爆文分析、热点追踪与原创检测一站式解决方案
    易撰
    易撰是一款专为自媒体人打造的高效AI写作工具,提供爆文分析、实时热点追踪、海量视频素材库及智能原创检测功能。通过数据驱动的内容优化策略,帮助创作者提升文章质量、节省创作时间并最大化收益潜力。
    13次使用
  • 百度作家平台:官方一站式AI辅助创作工具,智能续写与校阅助力高效写作
    百度作家平台
    百度作家平台是百度官方推出的AI写作助手,提供智能对话、AI续写、润色扩写及实时校阅功能,帮助创作者提升小说与故事创作效率,轻松产出优质内容。
    0次使用
  • 文思助手:AI智能写作工具,一键生成报告、论文与公文
    文思助手
    文思助手是一款高效的AI写作智能体,支持一键生成专业报告、工作总结及科研论文。具备公文写作、AI搜索与对话功能,助力用户提升文档创作效率与质量。
    5次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码