Go語言程式:獲取匹配指定萬用字元模式的檔名列表
Go語言的一個特性是能夠基於指定模式搜尋和檢索檔案。在本文中,我們將討論在Go語言中獲取匹配指定萬用字元模式的檔名列表的不同方法,併為每種方法提供語法和示例。
方法一:使用“filepath.glob”
“filepath.Glob”方法是檢索匹配指定萬用字元模式的檔名列表的最簡單、最直接的方法。該函式接受一個模式作為輸入,並返回一個匹配該模式的字串切片。
語法
filenames, err := filepath.Glob(pattern)
“filepath.Glob”函式接受一個字串引數`pattern`,即您要匹配的萬用字元模式。該函式返回兩個值:`files`,這是一個表示匹配該模式的檔名的字串切片;以及`err`,這是一個錯誤值。如果函式呼叫成功,`err`將為`nil`。
演算法
步驟1 - 在您的Go程式中匯入“path/filepath”包。
步驟2 - 使用您要匹配的萬用字元模式定義一個`pattern`變數。
步驟3 - 使用`pattern`作為輸入呼叫“filepath.Glob”函式,並將返回的結果儲存在一個變數中。
步驟4 - 檢查呼叫“filepath.Glob”函式時是否發生錯誤。如果發生錯誤,列印錯誤訊息並返回。
步驟5 - 列印匹配該模式的檔名列表。
示例
在這個示例中,我們將使用Go語言的內部包filepath.glob來獲取匹配指定萬用字元模式的檔名列表。
package main
import (
"fmt"
"path/filepath"
)
func main() {
pattern := "*.txt"
files, err := filepath.Glob(pattern)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Files:", files)
}
輸出
Files: []
方法二:使用“ioutil.ReadDir”
“ioutil.ReadDir”方法也可用於檢索匹配指定模式的檔名列表。該函式接受一個目錄路徑作為輸入,並返回一個“os.FileInfo”結構的切片,這些結構表示目錄中的檔案。然後,我們可以根據模式過濾檔案並檢索檔名。
語法
ioutil.ReadDir(dir)
“ioutil.ReadDir”函式接受一個字串引數`dirPath`,即您要讀取的目錄的路徑。該函式返回兩個值:`files`,這是一個表示目錄中檔案的os.FileInfo物件的切片;以及`err`,這是一個錯誤值。如果函式呼叫成功,`err`將為`nil`。
filepath.Match(pattern, file.Name())
“filepath.Match”函式接受兩個字串引數:`pattern`,即您要匹配的萬用字元模式;以及`name`,即您要與該模式匹配的檔名。該函式返回兩個值:`match`,這是一個布林值,指示模式和檔名是否匹配;以及`err`,這是一個錯誤值。如果函式呼叫成功,`err`將為`nil`。
演算法
步驟1 - 在您的Go程式中匯入“io/ioutil”和“path/filepath”包。
步驟2 - 使用您要匹配的萬用字元模式定義一個`pattern`變數。
步驟3 - 使用目錄路徑作為輸入呼叫“ioutil.ReadDir”函式,並將返回的結果儲存在一個變數中。
步驟4 - 檢查呼叫“ioutil.ReadDir”函式時是否發生錯誤。如果發生錯誤,列印錯誤訊息並返回。
步驟5 - 初始化一個空的字串切片來儲存檔名。
步驟6 - 遍歷“ioutil.ReadDir”返回的結果中的每個檔案。
步驟7 - 使用`pattern`和檔名作為輸入呼叫“filepath.Match”函式,並將結果儲存在一個變數中。
步驟8 - 如果“filepath.Match”的結果為真,則將檔名新增到檔名切片中。
步驟9 - 對“ioutil.ReadDir”返回的結果中的所有檔案重複步驟6到8。
步驟10 - 列印匹配該模式的檔名列表。
示例
在這個示例中,我們將使用Go語言的內部包ioutil.ReadDir來獲取匹配指定萬用字元模式的檔名列表。
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
)
func main() {
pattern := "*.go"
files, err := ioutil.ReadDir(".")
if err != nil {
fmt.Println("Error:", err)
return
}
var matchingFiles []string
for _, file := range files {
match, err := filepath.Match(pattern, file.Name())
if err != nil {
fmt.Println("Error:", err)
return
}
if match {
matchingFiles = append(matchingFiles, file.Name())
}
}
fmt.Println("Files:", matchingFiles)
}
輸出
Files: [main.go]
結論
這是在Go語言中檢索匹配指定萬用字元模式的檔名列表的兩種方法。這兩種方法都非常簡單,可以輕鬆地實現到您的Go程式中。“filepath.Glob”方法推薦用於大多數用例,但是當您需要更多地控制檔案過濾過程時,“ioutil.ReadDir”方法會很有用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP