路径包只能用于以正斜杠分隔的路径,例如 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
网友评论