接口函数汇总
- ToSlash函数
 
func ToSlash(path string) string
 功能:
 将path中平台相关的路径分隔符转换成’/’
- FromSlash函数
 
func FromSlash(path string) string
 功能:
 将 path 中的 ‘/’ 转换为系统相关的路径分隔符
3.Dir函数
func Dir(path string) string
 功能:
 获取path中最后一个分隔符之前的部分(不包含分隔符)
4.Base函数
func Base(path string) string
 功能:
 获取path中最后一个分隔符之后的部分(不包含分隔符)
5.Split函数
func Split(path string) (dir, file string)
 功能:
 获取path中最后一个分隔符前后的两部分,dir是分隔符前面的部分包含分隔符,
 file是分隔符后面的部分不包含分隔符
- Ext函数
 
func Ext(path string) string
 功能:
 获取路径字符串中的文件扩展名
7.Rel函数
func Rel(basepath, targpath string) (string, error)
 功能:
 获取targpath相对于basepath的路径,要求targpaht和basepath必须"都是相对路径"或都是"绝对路径"
8.Join函数
func Join(elem …string) string
 功能:将elem中的多个元素合并成一个路径,忽略空元素,清理多余字符
9.Clean函数
func Clean(path string) string
功能:清除path中多余的字符
规则如下:
 1.如果有多个分隔符,则只留一个
 2.消除每一个.(当前路径)路径名
 3.消除每一个…(父目录)路径名,以及它之前的非…元素
 2和3使用于linux系统
- IsAbs函数
 
func IsAbs(path string) (b bool)
 功能:判断该路径是否是绝对路径
- Abs函数
 
func Abs(path string) (string, error)
 功能:获取path的绝对路径
- SplitList函数
 
func SplitList(path string) []string
 功能:按os.PathListSeparator即(;)将路径进行分割
- VolumeName函数
 
func VolumeName(path string) string
 功能:返回路径字符串中的卷名
- EvalSymlinks函数
 
func EvalSymlinks(path string) (string, error)
 功能:返回链接(快捷方式)所指向的实际文件
15.Match函数
func Match(pattern, name string) (matched bool, err error)
 功能:根据pattern来判断name是否匹配,如果匹配则返回true
pattern 规则如下:
 可以使用 ? 匹配单个任意字符(不匹配路径分隔符)。
 可以使用 * 匹配 0 个或多个任意字符(不匹配路径分隔符)。
 可以使用 [] 匹配范围内的任意一个字符(可以包含路径分隔符)。
 可以使用 [^] 匹配范围外的任意一个字符(无需包含路径分隔符)。
 [] 之内可以使用 - 表示一个区间,比如 [a-z] 表示 a-z 之间的任意一个字符。
 反斜线用来匹配实际的字符,比如 * 匹配 *,[ 匹配 [,\a 匹配 a 等等。
 [] 之内可以直接使用 [ * ?,但不能直接使用 ] -,需要用 ]、- 进行转义。
16.Glob函数
func Glob(pattern string) (matches []string, err error)
 功能:列出与指定的模式 pattern 完全匹配的文件或目录(匹配原则同上)
实例
package main
import (
	"os"
	"io/ioutil"
	"fmt"
	"path/filepath"
	"time"
)
func GetAllFile(pathname string, s []string) ([]string, error){
	fromSlash := filepath.FromSlash(pathname)
	//fmt.Println(fromSlash)
	rd, err := ioutil.ReadDir(fromSlash)
	if err != nil {
		//log.LOGGER("Error").Error("read dir fail %v\n", err)
		fmt.Println("read dir fail:", err)
		return s, err
	}
	for _, fi := range rd {
		if fi.IsDir() {
			fullDir := filepath.Join(fromSlash,fi.Name())
			s, err := GetAllFile(fullDir, s)
			if err != nil {
				fmt.Println("read dir fail:", err)
				//log.LOGGER("Error").Error("read dir fail: %v\n", err)
				return s, err
			}
		} else {
			fullName := filepath.Join(fromSlash, fi.Name())
			s = append(s,fullName)
		}
	}
	return s,nil
}
func GetALLFIles_walk(pathname string)([]string){
	StartTime :=time.Now();
	dst_target :=[]string{}
	err := filepath.Walk(pathname, func(src string, f os.FileInfo, err error) error {
		if f == nil {
			return err
		}
		if f.IsDir(){
			return nil
		}else { //进行文件的复制
			dst_target=append(dst_target,src)
			//return s
		}
		//println(path)
		return nil
	})
	if err != nil {
		fmt.Printf("filepath.Walk() returned %v\n", err)
		return nil
		//log.LOGGER("Error").Error("filepath.Walk() returned %v\n", err)
	}
	fmt.Println("Cost Time:",time.Since(StartTime))
	return dst_target
}
func test() {
	pwd,_ := os.Getwd()
	filepath.Walk(pwd,func(fpath string, info os.FileInfo, err error) error {
		if match,err := filepath.Match("???",filepath.Base(fpath));match {
			fmt.Println("path:",fpath)
			fmt.Println("info:",info)
			return err
		}
		return nil
	})
}
func main(){
 
	 s:=[]string{}
        n:=[]string{}
        pathname:="/home/robot/gomod/src"
 
        fmt.Printf("filepath walk cost time returned \n")
        n = GetALLFIles_walk(pathname)
        fmt.Println("\n\r")
        fmt.Println("the number of file is %v",len(n))
        fmt.Println("\n\r")
 
        fmt.Printf("io util cost time returned \n")
        StartTime :=time.Now();
        s,_=GetAllFile(pathname,s)
        fmt.Println("Cost Time:",time.Since(StartTime))
        fmt.Println("the number of file is %v,content is:%v",len(s),s)
}
 
运行结果
robot@ubuntu:~/gomod/src/file$ go run path.go 
filepath walk cost time returned 
Cost Time: 3.039487ms
the number of file is %v 789
io util cost time returned 
Cost Time: 3.116647ms
the number of file is %v,content is:%v 0 []