標題:Go語言使用path/filepath.Glob函數來取得檔案路徑列表及檔案資訊
引言:
在開發過程中,我們經常需要取得指定模式的檔案路徑列表,並且同時取得相應文件的詳細資訊。 Go語言的path/filepath套件提供了Glob函數來滿足這個需求。本文將介紹如何使用Glob函數來列出指定模式的檔案路徑列表,並同時傳回檔案資訊物件列表及錯誤訊息。
一、path/filepath套件
Go語言提供的path/filepath套件位於標準函式庫中,它實作了一些對路徑和檔案名稱的常見操作。其中的Glob函數可以符合指定模式的檔案路徑,並傳回符合的檔案路徑清單。
二、使用Glob函數取得檔案路徑清單
下面我們透過一個簡單的範例來示範如何使用Glob函數取得檔案路徑清單。我們假設需要取得指定目錄下所有以".txt"為後綴的檔案路徑清單。
範例程式碼如下:
package main import ( "fmt" "path/filepath" ) func main() { // 指定目录 dir := "./path/to/dir" // 模式匹配 pattern := filepath.Join(dir, "*.txt") // 获取匹配的文件路径列表 filePaths, err := filepath.Glob(pattern) if err != nil { fmt.Println("获取文件路径列表失败:", err) return } // 打印文件路径列表 fmt.Println("文件路径列表:") for _, filePath := range filePaths { fmt.Println(filePath) } }
在上述程式碼中,首先我們指定了一個目錄dir
,然後使用filepath.Join
函數將目錄路徑和模式拼接起來,產生匹配的模式pattern
。接下來,我們呼叫filepath.Glob
函數傳入模式pattern
來取得檔案路徑清單filePaths
。最後,我們透過遍歷列表將所有的檔案路徑列印出來。
三、傳回檔案資訊物件清單及錯誤訊息
在取得檔案路徑清單的同時,我們也可以取得每個檔案的詳細資料。透過呼叫os.Stat
函數來取得指定路徑的檔案資訊。下面我們改進上述範例程式碼來取得文件資訊物件清單及錯誤資訊。
範例程式碼如下:
package main import ( "fmt" "os" "path/filepath" ) func main() { // 指定目录 dir := "./path/to/dir" // 模式匹配 pattern := filepath.Join(dir, "*.txt") // 获取匹配的文件路径列表 filePaths, err := filepath.Glob(pattern) if err != nil { fmt.Println("获取文件路径列表失败:", err) return } // 获取文件信息列表 var fileInfos []os.FileInfo for _, filePath := range filePaths { fileInfo, err := os.Stat(filePath) if err != nil { fmt.Println("获取文件信息失败:", err) continue } fileInfos = append(fileInfos, fileInfo) } // 打印文件路径及信息 fmt.Println("文件路径及信息:") for i, filePath := range filePaths { fileInfo := fileInfos[i] fmt.Println("文件路径:", filePath) fmt.Println("文件大小:", fileInfo.Size()) fmt.Println("文件修改时间:", fileInfo.ModTime()) fmt.Println("文件权限:", fileInfo.Mode().String()) } }
上述程式碼中,我們在取得檔案路徑清單的同時,循環遍歷每個檔案路徑,然後呼叫os.Stat
函數取得相應文件的詳細資訊。將每個檔案的資訊保存在fileInfos
清單中。最後,我們透過遍歷清單將文件路徑及詳細資訊列印出來。
結尾:
本文介紹如何使用Go語言的path/filepath套件中的Glob函數來取得指定模式的檔案路徑列表,並同時返回檔案資訊物件列表及錯誤訊息。透過程式碼範例的講解,讀者可以更好地理解並運用該函數來滿足自己的開發需求。希望本文對讀者有幫助。
以上是使用path/filepath.Glob函數列出指定模式的檔案路徑列表,並傳回檔案資訊物件列表及錯誤訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!