跳到主要内容

go-操作文件

Go 日常开发中,无论是写 Web 服务、脚本,还是处理日志、配置文件,都需要操作磁盘文件。

  • Go 主要使用标准库 os 来操作文件,配合 io、bufio、path/filepath 完成更复杂的文件处理

操作文件入门​

  1. 简单读写可用 os.WriteFile / os.ReadFile。

  2. 更精细的控制用 os.OpenFile(flag + 权限)。

  3. 文件用完要 Close,习惯写 defer f.Close()。

    • 函数结束时关闭文件,来释放文件操作符
  4. Unix 权限用八进制,如 0644、0755;在 Windows 上这些权限位基本无效。

  5. 目录用 Mkdir / MkdirAll,删目录用 Remove / RemoveAll。

常用文件操作方法​

方法作用使用场景
os.Create()创建文件,存在则清空创建日志、导出文件
os.Open()以只读方式打开文件读取配置、日志
os.OpenFile()按指定模式打开文件追加日志、控制读写
os.ReadFile()一次性读取整个文件读取小型 JSON、TXT
os.WriteFile()一次性写入整个文件保存配置、生成文件
os.Mkdir()创建单级目录创建文件夹
os.MkdirAll()递归创建多级目录创建上传目录
os.Remove()删除文件或空目录删除临时文件
os.RemoveAll()递归删除目录及内容清理缓存目录
os.Stat()获取文件信息检查文件是否存在
os.Rename()重命名或移动文件文件改名

文件操作相关标准库​

除了 os,Go 还提供几个常用的文件处理库。

标准库主要作用常见场景
os文件、目录基础操作创建、读取、删除
io通用 I/O 接口与工具io.Copy、流式读取
bufio带缓冲的 I/O逐行读取大日志
path/filepath文件路径处理拼接路径、获取扩展名
encoding/jsonJSON 编解码读取、保存 JSON 配置

文件权限​

在 Linux/macOS 中,文件权限通常使用八进制表示。

权限所有者用户组其他用户常见用途
0644读写只读只读普通文件
0600读写无无私密配置
0755读写执行读执行读执行目录、可执行文件
0700读写执行无无私有目录

这里的数字:

  • 4 = 读(Read)
  • 2 = 写(Write)
  • 1 = 执行(Execute)
  • 7 = 读 + 写 + 执行
  • 6 = 读 + 写

注意:实际创建权限还会受到系统 umask 的影响;Windows 不采用相同的 Unix 权限模型。