美文网首页
路径path的常用操作

路径path的常用操作

作者: 酷走天涯 | 来源:发表于2018-12-26 22:18 被阅读19次

    路径包只能用于以正斜杠分隔的路径,例如 URL 中的路径。此软件包不处理带有驱动器号或反斜杠的 Windows 路径; 要操作操作系统路径,请使用路径/文件路径包

    base

    func Base(path string) string

    Base 返回路径的最后一个元素。在提取最后一个元素之前删除尾部斜杠。如果路径为空,则 Base 返回“.”。如果路径完全由斜线组成,则 Base 返回“/”

    示例如下

    package main
    import (
      "path"
      "fmt"
    )
    func main() {
      absolutePath := "/Users/xujie/Downloads/icon_dqsk_68_slices/demo.txt"
      name := path.Base(absolutePath)
      fmt.Println(name)
    }
    
    image.png

    如果路径为空 则输出.

    package main
    
    import (
      "path"
      "fmt"
    )
    
    func main() {
      absolutePath := ""
      name := path.Base(absolutePath)
      fmt.Println(name)
    }
    
    image.png

    如果路径中只包含/ 则输出 /

    package main
    
    import (
      "path"
      "fmt"
    )
    
    func main() {
      absolutePath := "/"
      name := path.Base(absolutePath)
      fmt.Println(name)
    }
    
    image.png

    Clean

    func Clean(path string) string

    通过规则处理让源路径成为最短等价路径

    处理规则如下

    1.使用单斜线取代多斜线
    2.取消每个包含.名称的路径
    3.取消内部包含..的路径
    4.取消/..根路径的元素,使用/替换

    这个过程是循环执行的,直到路径符合所有规则

    示例

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      paths := []string{
        "a/c",
        "a//c",
        "a/c/.",
        "a/c/b/..",
        "/../a/c",
        "/../a/b/../././/c",
        "",
      }
    
      for _, p := range paths {
        fmt.Printf("Clean(%q) = %q\n", p, path.Clean(p))
      }
    }
    
    image.png

    Dir

    func Dir(path string) string

    获取路径,返回最后一个/之前的字符串,如果路径为空,则返回.,如果只有一个/则返回斜杆本身

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      fmt.Println(path.Dir("/a/b/c.txt"))
      fmt.Println(path.Dir("a/b/c"))
      fmt.Println(path.Dir("/"))
      fmt.Println(path.Dir(""))
    }
    
    image.png

    Ext

    func Ext(path string) string

    获取文件的扩展名称,如果.没有点,则返回空字符串

    示例如下

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      fmt.Println(path.Ext("/a/b/c/bar.css"))
      fmt.Println(path.Ext("/a/b/c/bar"))
      fmt.Println(path.Ext("/"))
      fmt.Println(path.Ext(""))
    }
    
    image.png

    IsAbs

    func IsAbs(path string) bool
    如何检测路径是否是绝度路径?
    检测规则就是检测路径字符串第一个字符是否是/

    示例

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      fmt.Println(path.IsAbs("/dev/null"))
      fmt.Println(path.IsAbs("text.txt"))
      fmt.Println(path.IsAbs(""))
      fmt.Println(path.IsAbs("/"))
      fmt.Println(path.IsAbs("./user/profile.txt"))
    }
    
    image.png

    Join

    func Join(elem ...string) string
    Join 将任意数量的路径元素加入到单个路径中,如有必要添加分隔斜线。结果是 Cleaned; 特别是,所有空串都被忽略

    示例

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      fmt.Println(path.Join("/user","name","kuzou.txt"))
      fmt.Println(path.Join("/user","/name","/","kuzou.txt"))
    
    }
    
    image.png

    Match

    func Match(pattern, name string) (matched bool, err error)

    使用正则匹配路径是否符合规则

    package main
    
    import (
      "path"
      "fmt"
    )
    func main() {
     matched,error := path.Match(`S/*`,"S/user")
      if error != nil {
        fmt.Println(error)
      }
     fmt.Println(matched)
    }
    
    image.png

    Split

    func Split(path string) (dir, file string)
    文件的路径分割成目录和文件名

    示例

    package main
    
    import (
      "fmt"
      "path"
    )
    
    func main() {
      dir,fileName:= path.Split("/user/name/kuzou.txt")
      fmt.Printf("文件路径:%s\n",dir)
      fmt.Printf("文件名称:%s",fileName)
    }
    
    image.png

    相关文章

      网友评论

          本文标题:路径path的常用操作

          本文链接:https://www.haomeiwen.com/subject/idvpqqtx.html