使用Golang编写创建递归目录的程序

在我们进行文件操作时,经常需要创建目录。对于一个需要创建多层级目录的场景,我们可以使用递归算法来完成。

osMkdirAll
package main

import (
    "fmt"
    "os"
)

func main() {
    err := os.MkdirAll("./testdir/subdir", os.ModePerm)
    if err != nil {
        fmt.Println("创建目录失败!", err)
    } else {
        fmt.Println("创建目录成功!")
    }
}
MkdirAll

运行该程序,可以看到输出结果:

创建目录成功!

如果我们需要创建多个目录,只需要将目录路径修改即可,例如:

package main

import (
    "fmt"
    "os"
)

func main() {
    err := os.MkdirAll("./testdir/subdir1/subdir2/subdir3", os.ModePerm)
    if err != nil {
        fmt.Println("创建目录失败!", err)
    } else {
        fmt.Println("创建目录成功!")
    }
}

此时,程序会创建多层级的目录

如果有的目录在创建之前已经存在了,程序依然可以正常工作。如果目录已经存在,则该函数会直接返回,不再进行创建。

接下来,我们封装一个函数来创建递归目录,方便我们在其他代码中直接使用。

package main

import (
    "fmt"
    "os"
)

// CreateDirs 创建多级目录
func CreateDirs(path string) error {
    err := os.MkdirAll(path, os.ModePerm)
    if err != nil {
        return err
    }
    return nil
}

func main() {
    err := CreateDirs("./testdir/subdir1/subdir2/subdir3")
    if err != nil {
        fmt.Println("创建目录失败!", err)
    } else {
        fmt.Println("创建目录成功!")
    }
}
CreateDirs

结论

osMkdirAll