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编程语言都提供了一种简单直接的方法来完成此任务。
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP