注册 登录

清河洛

go语言中的路径操作

qingheluo2021-10-25清河洛392
"path"包实现了对斜杠分隔的路径的常用操作IsAbs(path string) bool:返回路径是否是一个绝对路径 Split(path string) (dir, file string) 将路径从最后一个斜杠后面位置分隔为两个部分(dir和file)并返回 如果路径中没有斜杠,dir会设为空字符串 Join(elem ...string) string 将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠 结果是经过简化的,所有的空字符串元素会被忽略。 Dir(path string) string 返回该路径最后一个元素所在的目录...

"path"包实现了对斜杠分隔的路径的常用操作

IsAbs(path string) bool:返回路径是否是一个绝对路径
Split(path string) (dir, file string)
    将路径从最后一个斜杠后面位置分隔为两个部分(dir和file)并返回
    如果路径中没有斜杠,dir会设为空字符串
Join(elem ...string) string
    将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠
    结果是经过简化的,所有的空字符串元素会被忽略。
Dir(path string) string
    返回该路径最后一个元素所在的目录
    如果可以,会尽可能去除末尾的斜杠
    如果路径是空字符串,会返回"."
Base(path string) string
    返回路径的最后一个元素(去除末尾的斜杠)
    如果路径是"",会返回"."
    如果路径是只有一个斜杆构成,会返回"/"
Ext(path string) string
    返回path文件扩展名(包括‘.‘)
    如果path中没有‘.‘会返回空字符串
Clean(path string) string:通过单纯的词法操作返回和path代表同一地址的最短路径
Match(pattern, name string) (matched bool, err error)
    返回name是否匹配文件名模式匹配字符串pattern
    ‘*‘匹配0或多个非/的字符,‘?‘匹配1个非/的字符
    ‘[character-range]‘匹配的字符组(必须非空)

"path/filepath"包在"path"包的基础上实现了兼容各操作系统并新增了一些函数

"path"包中的函数在该包中都存在且用法和功能完全相同,新增的函数

Abs(path string) (string, error):返回path代表的绝对路径
Rel(basepath, targpath string) (string, error):返回将将basepath路径作为基准的targpath路径的相对路径表示形式
SplitList(path string) []string:将PATH或GOPATH等环境变量里的多个路径分割开
FromSlash(path string) string:将path中的斜杠(‘/‘)替换为路径分隔符并返回替换结果
ToSlash(path string) string:将path中的路径分隔符替换为斜杠(‘/‘)并返回替换结果
VolumeName(path string) (v string):返回路径的卷名
EvalSymlinks(path string) (string, error):返回path指向的符号链接所指向的路径
Glob(pattern string) (matches []string, err error):返回所有匹配模式匹配字符串pattern的文件或者nil

Walk(root string, walkFn WalkFunc) error
    遍历指定目录下的文件树,对每一个文件树中的目录和文件都会调用walkFn,包括root自身
    所有访问文件/目录时遇到的错误都会传递给walkFn过滤
    Walk函数不会遍历文件树中的符号链接(快捷方式)文件指向的路径

type WalkFunc func(path string, info os.FileInfo, err error) error
    Walk函数对每一个文件/目录都会调用WalkFunc函数类型值

使用示例
filepath.Walk(path,
    func (path string, info os.FileInfo, err error) error{
        if err!=nil{
            return err
        }
        if info.IsDir() {
            fmt.Println("dir:", path)
        }else{
            fmt.Println("file:", path)
        }
        return err
})


网址导航