1. 程式人生 > >go學習7

go學習7

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)
}