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