Go-文件系统相关操作

1. 创建目录

Go 语言中可以使用 os.Mkdiros.MkdirAll 方法来创建文件夹。

  • os.Mkdir 用于创建单层目录。如果目录已存在或路径无效,会返回错误。
  • os.MkdirAll 用于创建多层目录,它会自动创建不存在的父级目录。

示例代码:创建目录

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

import (
"fmt"
"os"
)

func main() {
err := os.Mkdir("exampleDir", 0755)
if err != nil {
fmt.Println("创建目录失败:", err)
return
}
fmt.Println("目录创建成功")

err = os.MkdirAll("parentDir/childDir", 0755)
if err != nil {
fmt.Println("创建多层目录失败:", err)
} else {
fmt.Println("多层目录创建成功")
}
}

2. 删除目录

删除目录可以使用 os.Removeos.RemoveAll

  • os.Remove 仅删除单个空目录或文件。
  • os.RemoveAll 用于删除包含内容的目录,通常用于清理临时文件夹。

示例代码:删除目录

1
2
3
4
5
6
7
8
9
10
11
12
13
err := os.Remove("exampleDir")
if err != nil {
fmt.Println("删除目录失败:", err)
} else {
fmt.Println("目录删除成功")
}

err = os.RemoveAll("parentDir")
if err != nil {
fmt.Println("删除多层目录失败:", err)
} else {
fmt.Println("多层目录删除成功")
}

3. 修改和检查权限

在创建文件或文件夹时,我们可以设置权限。例如 0755 表示所有者有读写执行权限,
而组和其他用户只有读取和执行权限。

可以使用 os.Chmod 来修改文件或目录的权限。

示例代码:权限控制

1
2
3
4
5
6
7
8
9
10
11
12
13
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("创建文件失败:", err)
return
}
defer file.Close()

err = os.Chmod("example.txt", 0644)
if err != nil {
fmt.Println("修改权限失败:", err)
} else {
fmt.Println("权限修改成功")
}

示例代码:检查权限

我们可以使用 os.Stat 获取文件信息,从而检查权限。

1
2
3
4
5
6
7
info, err := os.Stat("example.txt")
if err != nil {
fmt.Println("获取文件信息失败:", err)
return
}
fmt.Printf("文件权限: %o
", info.Mode().Perm())

4. 实用技巧

  • 递归删除os.RemoveAll 可用于递归删除,但请小心使用,避免误删重要数据。
  • 权限设置:合理的权限设置可以提高应用的安全性。
  • 检查目录是否存在:使用 os.Stat 来检查目录是否存在,以避免重复创建。