Go语言程序:显示目录下的所有子目录
在这篇Go语言文章中,我们将编写一个Go语言程序,使用Go编程语言中的`open()`函数、`walk`函数以及`readdir`函数来显示给定目录下的所有子目录。
方法一
在这个例子中,我们将编写一个Go语言程序,使用`os`包中的`os.Open()`函数来显示目录中的所有子目录。显示给定目录中子目录最简单的方法之一是使用`**os.Open()**`函数。
示例
package main import ( "fmt" "os" ) func main() { dirPath := "new" dir, err := os.Open(dirPath) if err != nil { fmt.Println(err) return } defer dir.Close() files, err := dir.Readdir(0) if err != nil { fmt.Println(err) return } fmt.Println("The required directories are:") for _, file := range files { if file.IsDir() { fmt.Println(file.Name()) } } }
输出
The required directories are: go directory new directory new1
方法二
另一种显示给定目录中子目录的方法是使用`**filepath.Walk()**`函数。此函数接收目录路径和回调函数作为输入,并遍历目录树,为树中的每个文件或目录调用回调函数。然后,回调函数可以检查每个文件或目录的`**os.FileInfo**`对象并采取适当的操作,例如将目录名添加到列表中。
示例
package main import ( "fmt" "os" "path/filepath" ) func main() { dirPath := "new" var dirs[]string err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error { if info.IsDir() { dirs = append(dirs, info.Name()) } return nil }) if err != nil { fmt.Println(err) return } for _, dir := range dirs { fmt.Println(dir) } }
输出
new go directory new directory new1
方法三
显示给定目录中子目录的第三种方法是使用`**ioutil.ReadDir()**`函数。此函数接收目录路径作为输入,并返回`**os.FileInfo**`对象的切片,类似于`**os.Open()**`方法。为了只显示目录,我们可以遍历切片并检查每个`**os.FileInfo**`对象的`**IsDir()**`方法。
示例
package main import ( "fmt" "io/ioutil" ) func main() { dirPath := "new" files, err := ioutil.ReadDir(dirPath) if err != nil { fmt.Println(err) return } for _, file := range files { if file.IsDir() { fmt.Println(file.Name()) } } }
输出
go directory new directory new1
结论
我们已经成功编译并执行了一个Go语言程序,用于显示目录中的所有子目录。我们使用了三种不同的方法来使用Go显示给定目录中的所有子目录。方法的选择将取决于您特定用例的要求。无论选择哪种方法,Go编程语言都提供了一种简单直接的方法来完成此任务。
广告