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
})
```
';