如何在Golang中使用os包进行文件操作_Golang os包应用实例-Golang

go的os包适合底层跨平台文件操作,但处理文本需注意编码、换行符、路径分隔符;推荐用os.readfile/writefile(小文件)、filepath.join拼接路径、filepath.walkdir遍历、os.stat判断存在性与类型,原子操作依赖os.rename或os.createtemp。

Go 的 os 包适合做底层、跨平台的文件系统操作,但直接用它处理文本内容或结构化数据容易出错——它不自动处理编码、换行符差异或路径分隔符,也不提供原子写入保障。

创建/删除文件和目录用 os.Create、os.MkdirAll、os.Remove

os.Create 总是新建文件(若存在则清空),不支持“仅当不存在时创建”;os.MkdirAll 是安全选择,能递归建多级目录;os.Remove 删除单个文件或空目录,非空目录需用 os.RemoveAll。

  • 用 os.OpenFile(path, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644) 实现“仅新建”,失败时返回 *os.PathError,检查 Err 是否为 os.ErrExist
  • os.Mkdir("a/b", 0755) 在 Linux 下会失败(父目录 a 不存在),必须改用 os.MkdirAll("a/b", 0755)
  • os.Remove("nonexistent.txt") 返回 os.ErrNotExist,不是 panic,要显式判断错误类型而非只看 err != nil

读写文件内容优先用 os.ReadFile 和 os.WriteFile

这两个函数是 Go 1.16+ 引入的便捷封装,内部自动处理打开、关闭、错误传播,比手动调 os.Open + io.ReadAll 更简洁。但它们把整个文件加载进内存,不适合大文件。

  • os.ReadFile("config.json") 返回 []byte,不是字符串;若需 UTF-8 文本,应后续用 string(data) 转换,不要假设系统默认编码
  • os.WriteFile("log.txt", []byte("msg\n"), 0644) 会覆盖原文件;追加写必须用 os.OpenFile 配合 os.O_APPEND
  • 权限参数(如 0644)在 Windows 上被忽略,实际权限由系统策略决定

遍历目录别硬写递归,用 filepath.WalkDir(Go 1.16+)

filepath.Walk 已被标记为 deprecated,新代码应使用 filepath.WalkDir。它按字典序访问条目,且支持在回调中返回 filepath.SkipDir 跳过子树,比自己维护栈更可靠。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何在Golang中使用os包进行文件操作_Golang os包应用实例-Golang
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4000278+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4000278+
  • 本周更新: 0+
  • 最后更新: 2026-03-16