如何使用Golang os操作系统文件_文件创建、删除和重命名

Go语言通过os包提供文件操作支持:os.Create()创建文件并写入内容,os.Remove()和os.RemoveAll()分别删除文件/空目录及递归删除目录树,os.Rename()重命名或移动文件/目录;需注意错误处理、路径合法性、权限及符号链接行为。

Go 语言通过 os 包提供了对操作系统文件操作的底层支持,包括创建、删除和重命名文件。这些操作简洁直接,但需注意错误处理、路径合法性及权限问题。

创建文件(含写入内容)

使用 os.Create() 可创建新文件(若已存在则清空内容),返回 *os.File 和 error。推荐搭配 defer file.Close() 确保资源释放。

  • 若只需创建空文件,调用 os.Create("path/to/file.txt") 即可
  • 若需写入内容,可用 file.WriteString()io.WriteString()
  • 更安全的方式是先检查路径目录是否存在,用 os.MkdirAll(dir, 0755) 创建父目录

删除文件或目录

os.Remove() 删除单个文件或空目录;os.RemoveAll() 递归删除整个目录树(含非空目录)。

  • os.Remove("old.log") —— 删除文件或空文件夹
  • os.RemoveAll("temp/") —— 彻底删除目录及其所有子项
  • 操作前建议用 os.Stat() 检查目标是否存在,避免误删或 panic

重命名(移动)文件或目录

os.Rename() 可用于重命名文件/目录,也支持跨目录移动(在同文件系统下有效)。

  • os.Rename("old.txt", "new.txt") —— 同目录重命名
  • os.Rename("data/log.txt", "archive/log.txt") —— 移动并可改名
  • 若目标路径所在目录不存在,会返回 error;需提前确保目标父目录存在
  • 跨磁盘或跨文件系统时可能失败,此时需手动复制+删除

常见注意事项

所有 os 文件操作都返回 error,不可忽略。路径应使用 filepath.Join() 拼接,避免硬编码斜杠;Windows/Linux 路径差异由标准库自动处理。

  • 始终检查 error,例如:if err != nil { log.Fatal(err) }
  • 避免在循环中频繁打开/关闭同一文件,可复用 *os.File
  • 重命名和删除对符号链接本身操作,不作用于其指向目标