Golang 在一个目录中显示所有的目录

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编程语言都提供了一种简单直接的方式来完成这个任务。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程