Go 是一門非常強大的編程語言,它支持各種各樣的功能,包括遞歸文件目錄下的 JSON 文件。涉及到文件操作,我們需要使用關鍵字 ‘io’ 和 ‘os’ 模塊,它們在 Go 中被廣泛使用。接下來,我們將來看看如何使用 Go 遞歸地獲取一個文件夾下的所有 JSON 文件。
首先,我們需要定義一個函數如下:
func fetchJsonFiles(dir string) ([]string, error) { files := make([]string, 0) lst, err := ioutil.ReadDir(dir) if err != nil { return nil, err } for _, item := range lst { if !item.IsDir() && filepath.Ext(item.Name()) == ".json" { files = append(files, dir+"/"+item.Name()) } else if item.IsDir() { f, err := fetchJsonFiles(filepath.Join(dir, item.Name())) if err != nil { return nil, err } files = append(files, f...) } } return files, nil }
這個函數使用了遞歸方式,它接收一個文件夾作為參數,并返回一個包含所有 JSON 文件路徑的字符串切片。我們首先將空字符串切片賦值給變量 files,并使用 ‘ioutil.ReadDir’ 函數讀取路徑所表示的目錄,并返回一個文件對象切片。我們循環遍歷 ‘lst’,檢查每一個對象是否是文件,以及其是否是 JSON 文件。如果是,我們就將其路徑加入文件切片中。如果不是,那么它一定是一個目錄,我們將調用 ‘fetchJsonFiles’ 函數遞歸地處理它,并將其返回值加入到文件切片中。
現在我們已經可以獲取所有 JSON 文件了,接下來我們將打印它們的文件路徑:
func main() { files, err := fetchJsonFiles("/path/to/dir") if err != nil { fmt.Println(err) } for _, file := range files { fmt.Println(file) } }
首先,我們調用 ‘fetchJsonFiles’ 函數,傳遞文件夾路徑作為參數,并檢查是否產生了錯誤。如果沒有,我們遍歷文件切片并打印每一個文件路徑。這個函數將會生成像以下這樣的輸出:
/path/to/dir/test.json /path/to/dir/sub/test.json /path/to/dir/sub/sub/test.json
這樣,我們就完成了遞歸搜索文件夾中所有的 JSON 文件的任務。如果需要,你可以使用 Go 自帶的 JSON 包解析這些文件并執行更加高級的處理操作。
上一篇go遞歸查詢生成json
下一篇vue api test