前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >路径path的常用操作

路径path的常用操作

作者头像
酷走天涯
发布2019-05-26 16:20:37
6370
发布2019-05-26 16:20:37
举报

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

base

func Base(path string) string

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

示例如下

代码语言:javascript
复制
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

如果路径为空 则输出.

代码语言:javascript
复制
package main

import (
  "path"
  "fmt"
)

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

image.png

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

代码语言:javascript
复制
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.取消/..根路径的元素,使用/替换

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

示例

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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

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

示例如下

代码语言:javascript
复制
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 如何检测路径是否是绝度路径? 检测规则就是检测路径字符串第一个字符是否是/

示例

代码语言:javascript
复制
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; 特别是,所有空串都被忽略

示例

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
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) 文件的路径分割成目录和文件名

示例

代码语言:javascript
复制
package main

import (
  "fmt"
  "path"
)

func main() {
  dir,fileName:= path.Split("/user/name/kuzou.txt")
  fmt.Printf("文件路径:%s\n",dir)
  fmt.Printf("文件名称:%s",fileName)
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • base
  • Clean
  • Dir
  • Ext
  • IsAbs
  • Join
  • Match
  • Split
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档