filepath

最后更新于:2022-04-02 02:45:33

[TOC] 一般可使用 filepath 而非 path ## 语法 ``` func IsAbs(path string) bool func Abs(path string) (string, error) // 根据相对路径返回绝对路径 func Rel(basepath, targpath string) (string, error) // 返回相对路径 func SplitList(path string) []string // 对 "/a/b/c:/usr/bin" 以":"切割 func Split(path string) (dir, file string) func Join(elem ...string) string func FromSlash(path string) string // 将"/" 转为 系统的分隔符,win系统为 "/" func ToSlash(path string) string // 将 "\" 转为 系统的分隔符,win系统为 "/" func VolumeName(path string) (v string) // "C:\foo\bar" 返回 C: func Dir(path string) string func Base(path string) string func Ext(path string) string func Clean(path string) string func EvalSymlinks(path string) (string, error) // 软连接对应的真实路径 func Match(pattern, name string) (matched bool, err error) func Glob(pattern string) (matches []string, err error) func Walk(root string, walkFn WalkFunc) error ``` ## 示例 ### Join ``` fmt.Println(filepath.Join("a", "b", "c")) fmt.Println(filepath.Join("a", "b/c")) fmt.Println(filepath.Join("a/b", "c")) fmt.Println(filepath.Join("a/b", "/c")) // Output: // a/b/c // a/b/c // a/b/c // a/b/c ``` ### Glob 匹配目录下的文件 ``` // 当前目录下的 *.go文件 filepath.Glob("./*.go") // 子目录下的 所有文件 filepath.Glob("./*/*") ``` ### 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 }) ```
';