使用Golang编写创建递归目录的程序
在我们进行文件操作时,经常需要创建目录。对于一个需要创建多层级目录的场景,我们可以使用递归算法来完成。
在Golang中,使用os
包中的MkdirAll
函数,可以递归的创建目录。下面是一个示例代码:
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
函数中,通过传递需要创建的目录路径参数,该函数就可以在任意地方被调用。
结论
在Golang中,使用os
包中的MkdirAll
函数,可以递归地创建目录。开发者可以根据需要将多层目录创建封装成函数,提高代码复用性。