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