获取目录下的文件或子目录下的文件。

一、遍历目录,以及子目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// WalkDir 获取指定目录及所有子目录下的所有文件,可以匹配后缀过滤。 找到第一个.exe文件就返回即可
func WalkDir(dirPth, suffix string) (files string, err error) {
//files = make([]string, 0, 30)
suffix = strings.ToLower(suffix) //忽略后缀匹配的大小写

err = filepath.Walk(dirPth, func(filename string, fi os.FileInfo, err error) error { //遍历目录
fmt.Println("file name :", fi.Name())
if files != "" {
return nil
}

if err != nil {
return err
}
if fi.IsDir() { // 忽略目录
return nil
}
if strings.HasSuffix(strings.ToLower(fi.Name()), suffix) {
//files = append(files, filename)
files = filename
}
return nil
})
return files, err
}

二、遍历目录下的文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func listAll(path string, suffix string) (fileTarget string, err error) {

// 获取该路径下的文件列表,并不会像Walk一样遍历子目录
files, err := ioutil.ReadDir(path)
if err != nil {
return "", err
}

for _, fi := range files {

if fi.IsDir() {
// 目录则直接跳过
continue
} else {
if strings.HasSuffix(strings.ToLower(fi.Name()), suffix) {
//files = append(files, filename)
fileTarget = filepath.Join(path, fi.Name())
break
}
}
}
return fileTarget, err
}