章节

14.8 目录操作

本篇学习 Go 中创建、读取与删除目录的常用函数,并能完成基础目录操作。

目录操作

概念说明

目录操作常见需求包括创建目录、读取目录列表、删除目录。
Go 标准库中这些能力主要由 os 包提供。

MkdirAllRemoveAll 都会递归处理目录。
使用时要特别确认路径,避免误删重要文件。

语法/规则

  1. 使用 os.Mkdir(path, perm) 创建单层目录。
  2. 使用 os.MkdirAll(path, perm) 创建多层目录。
  3. 使用 os.ReadDir(path) 读取目录项。
  4. 使用 os.Remove(path) 删除单个文件或空目录。
  5. 使用 os.RemoveAll(path) 递归删除目录。

目录操作示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import (
	"fmt"
	"os"
)

func main() {
	root := "demo_dir"
	err := os.MkdirAll(root+"/child", 0755) // 递归创建目录
	if err != nil {
		panic(err)
	}
	defer os.RemoveAll(root)

	entries, err := os.ReadDir(root) // 读取目录下的条目
	if err != nil {
		panic(err)
	}

	for _, entry := range entries {
		fmt.Println(entry.Name(), entry.IsDir())
	}
}

输出结果:

1
child true

常见错误

  1. os.Mkdir 创建多级目录,父目录不存在时会失败。
  2. 不确认路径就使用 os.RemoveAll,可能误删整个目录树。
  3. 读取目录后以为返回顺序可以代表业务顺序,应显式排序后再依赖顺序。
本文禁止转载
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
最近构建时间:2026-04-17 19:07:48 CST
载入天数...载入时分秒...
发表了 1 篇文章 · 发表了 152 篇笔记 · 总计 18 万 0 千字