[TOC] > 不管是unix 还是widnow 路径分隔符都使用 `/` >`path`包中提供的函数,`filepath`都有提供,一般使用`filepath` ## path ### Base 返回路径的最后一个元素 `path.Base(`/go/api/src/antbiz`)//antbiz` ### Clean 规整化路径(把相对路径转为绝对路径) ``` path.Clean(`D:/go/api/src/antbiz/test/test.go/../..`) //D:/go/api/src/antbiz ``` ### Dir 获取文件目录 ``` path.Dir("/a/b/c")) // /a/b path.Dir("/a/b/c/")) // /a/b/c ``` ### IsAbs(path string) bool 判断是否是觉得路径 ### Ext 获取文件后缀 `path.Ext("/a/b/c.css") //css` ### Join 并接 ``` path.Join(`go/api/src/antbiz/`, "../routers") //go/api/src/routers ``` ### Split 把路径分为目录与文件名 ``` path.Split("a/c/b.css") // a/c/ b.css ``` ## filepath ### Abs 获取绝对路径 ``` filepath.Abs("test/test.go") //D:\go\api\src\antbiz\test\test.go filepath.Abs("./") //D:\go\api\src\antbiz filepath.Abs(".") //D:\go\api\src\antbiz ``` ### VolumeName 获取盘符名,[window] ``` filepath.VolumeName("C:\foo\bar") //C: ``` ### Glob 匹配目录下的文件 `matches, _ := filepath.Glob(`D:/go/api/src/antbiz/*.zip`)//获取当前目录下的目录与文件` ``` matches, _ := filepath.Glob(`D:/go/api/src/antbiz/*.zip`) //最后带zip 的文件 ``` ### Walk 遍历递归遍历目录下所有的文件与目录,并执行操作 ``` e := filepath.Walk(`D:\go\api\src\antbiz\test`, func(path string, info os.FileInfo, err error) error { fmt.Println(path) //D:\go\api\src\antbiz\test\test.go fmt.Printf("%+v\n", info) return err }) ```