Golang 在一个目录中显示所有的目录
在这篇Golang文章中,我们将使用Go编程语言编写一个程序,使用open()函数、walk函数和readdir函数来显示给定目录中的所有目录。
方法1
在这个示例中,我们将使用os包中的open()函数编写一个Go语言程序,显示给定目录中的所有目录。显示给定目录中的目录的最简单方法之一是使用 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
方法2
在给定目录中显示目录的另一种方法是使用 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
方法3
显示给定目录中的目录的第三种方法是使用 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编程语言都提供了一种简单直接的方式来完成这个任务。