golang的文檔里面比較容易找到的一個(gè)方法是filepath.Walk,這個(gè)方法有個(gè)問題是會(huì)自動(dòng)遞歸遍歷當(dāng)前目錄的子目錄,其實(shí)我們通常只是想得到一個(gè)目錄下面的文件列表,并不需要這么多的信息,同時(shí)這個(gè)方法代碼寫起來也比較多比較復(fù)雜,我們也沒有必要這么做。
如果僅僅是想獲取一個(gè)目錄下面的文件和文件夾的列表,有兩個(gè)比較簡(jiǎn)單的方法
利用ioutil的ReadDir方法
1
2
3
4
5
6
7
8
9
10
11
12
|
package main import ( "fmt" "io/ioutil" ) func main() { files, _ := ioutil.ReadDir("./") for _, f := range files { fmt.Println(f.Name()) } } |
利用filepath的Glob方法
1
2
3
4
5
6
7
8
9
10
|
package main import ( "fmt" "path/filepath" ) func main() { files, _ := filepath.Glob("*") fmt.Println(files) // contains a list of all files in the current directory } |
補(bǔ)充:golang獲取文件/目錄(包含下面的文件)的大小
看代碼吧~
1
2
3
4
5
6
7
8
9
10
|
func DirSize(path string) (int64, error) { var size int64 err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { if !info.IsDir() { size += info.Size() } return err }) return size, err } |
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/xielingyun/article/details/56484004