go-操作文件
Go 日常开发中,无论是写 Web 服务、脚本,还是处理日志、配置文件,都需要操作磁盘文件。
- Go 主要使用标准库
os来操作文件,配合io、bufio、path/filepath完成更复杂的文件处理
操作文件入门
-
简单读写可用
os.WriteFile/os.ReadFile。 -
更精细的控制用
os.OpenFile(flag + 权限)。 -
文件用完要
Close,习惯写defer f.Close()。- 函数结束时关闭文件,来释放文件操作符
-
Unix 权限用八进制,如
0644、0755;在 Windows 上这些权限位基本无效。 -
目录用
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/json | JSON 编解码 | 读取、保存 JSON 配置 |
文件权限
在 Linux/macOS 中,文件权限通常使用八进制表示。
| 权限 | 所有者 | 用户组 | 其他用户 | 常见用途 |
|---|---|---|---|---|
0644 | 读写 | 只读 | 只读 | 普通文件 |
0600 | 读写 | 无 | 无 | 私密配置 |
0755 | 读写执行 | 读执行 | 读执行 | 目录、可执行文件 |
0700 | 读写执行 | 无 | 无 | 私有目录 |
这里的数字:
4= 读(Read)2= 写(Write)1= 执行(Execute)7= 读 + 写 + 执行6= 读 + 写
注意:实际创建权限还会受到系统 umask 的影响;Windows 不采用相同的 Unix 权限模型。