go 学习7(获取路径下的文件,再根据条件筛选)
package common
import (
"fmt"
"io/ioutil"
"strings"
)
//pathname 路径名 list要返回的目录列表 isAll是否要搜索子目录
func GetAllFile(pathname string,list []string,isAll bool) []string {
pathname = strings.TrimSuffix(pathname,"/") //如果路径是以/结尾的,则删除尾部的/
rd, err := ioutil.ReadDir(pathname) //该路径下的所有文件和文件夹
if err != nil {
fmt.Println(err)
}
for _, fi := range rd {
if fi.IsDir() && isAll { //是否是文件夹 并且要搜索所有子目录
GetAllFile(pathname +"/"+ fi.Name(),list,true) //递归
} else {
list = append(list,pathname + "/" + fi.Name())
}
}
return list
}
//根据前后缀筛选文件
func ScreenFilenName(list []string,prefix string,suffix string) []string{
var result []string
for _,fileName := range list{
HasPrefix := strings.HasPrefix(fileName,prefix) //前缀筛选
HasSuffix := strings.HasSuffix(fileName,suffix) //后缀筛选
if HasPrefix && HasSuffix {
result = append(result,fileName)
}
}
return result
}
func main() {
var result []string
list := GetAllFile("test",result,true) //获取路径下文件
fmt.Println(list)
result = ScreenFilenName(list,"","") //根据前后缀筛选文件
fmt.Println(result)
}