Go语言通过os包提供文件与目录操作,1. 使用os.Mkdir和os.MkdirAll创建目录;2. os.Remove和os.RemoveAll删除文件或目录;3. os.Rename重命名或移动文件;4. os.Stat配合os.IsNotExist检查路径是否存在;5. os.ReadDir遍历目录内容,需始终处理error以保证程序健壮性。

Go语言通过os包提供了丰富的文件与目录操作功能,包括创建、删除、读取、重命名等。以下是一些常见操作的实用示例,帮助快速掌握基本用法。
1. 创建目录
os.Mkdir 用于创建单个目录,os.MkdirAll 可递归创建多级目录。
-
os.Mkdir("dir", 0755):创建权限为0755的目录,父目录必须存在。 -
os.MkdirAll("dir/subdir", 0755):自动创建所有缺失的上级目录。
示例:
err := os.MkdirAll("data/logs", 0755)
if err != nil {
log.Fatal(err)
}
2. 删除目录或文件
os.Remove 可删除文件或空目录,os.RemoveAll 可递归删除整个目录树。
立即学习“go语言免费学习笔记(深入)”;
-
os.Remove("file.txt"):删除指定文件。 -
os.RemoveAll("dir"):强制删除目录及其内容,类似rm -rf。
示例:
err := os.RemoveAll("temp")
if err != nil {
log.Fatal(err)
}
3. 重命名或移动文件
使用 os.Rename 实现文件或目录的重命名或移动。
- 源路径和目标路径需在同一设备上。
- 目标文件若已存在,行为依赖操作系统,通常会覆盖失败。
示例:
err := os.Rename("oldname.txt", "newname.txt")
if err != nil {
log.Fatal(err)
}
4. 检查文件或目录是否存在
通过 os.Stat 和 os.IsNotExist 判断路径是否存在。
-
os.Stat(path)获取文件信息,若路径不存在则返回错误。 - 使用
os.IsNotExist(err)判断是否为“不存在”错误。
示例:
_, err := os.Stat("config.json")
if os.IsNotExist(err) {
fmt.Println("配置文件不存在")
} else if err != nil {
log.Fatal(err)
}
5. 遍历目录
使用 os.ReadDir(推荐)或 os.File.Readdir 读取目录内容。
-
os.ReadDir返回[]fs.DirEntry,性能更好。 - 适合遍历目录列出文件名或判断类型。
示例:
entries, err := os.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, entry := range entries {
if entry.IsDir() {
fmt.Printf("[DIR] %s\n", entry.Name())
} else {
fmt.Printf("[FILE] %s\n", entry.Name())
}
}
基本上就这些常用操作。注意每次调用后处理返回的error,确保程序健壮性。Go的标准库设计简洁,配合defer和error处理,能写出清晰可靠的文件操作代码。










