首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

路径 | path

  • import "path"
  • 概况
  • 索引
  • 例子
  • 子目录

概况

Package 路径实现用于操作斜线分隔路径的实用程序例程。

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

索引

  • 变量
  • func Base(path string) string
  • func Clean(path string) string
  • func Dir(path string) string
  • func Ext(path string) string
  • func IsAbs(path string) bool
  • func Join(elem ...string) string
  • func Match(pattern, name string) (matched bool, err error)
  • func Split(path string) (dir, file string)

例子

Base

Clean

Dir

Ext

IsAbs

Join

Split

包文件

变量

ErrBadPattern 表示通配模式格式错误。

代码语言:javascript
复制
var ErrBadPattern = errors.New("syntax error in pattern")
代码语言:javascript
复制
func Base(path string) string

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

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.Base("/a/b"))
	fmt.Println(path.Base("/"))
	fmt.Println(path.Base(""))
}
代码语言:javascript
复制
func Clean(path string) string

Clean 通过纯词法处理返回等价于路径的最短路径名。它反复应用以下规则,直到不能进行进一步的处理:

代码语言:javascript
复制
1. Replace multiple slashes with a single slash.
2. Eliminate each . path name element (the current directory).
3. Eliminate each inner .. path name element (the parent directory)
   along with the non-.. element that precedes it.
4. Eliminate .. elements that begin a rooted path:
   that is, replace "/.." by "/" at the beginning of a path.

返回的路径只有以“/”为根时才以斜杠结尾。

如果此进程的结果是空字符串,则 Clean 将返回字符串“。”。

另请参阅 Rob Pike,“计划9中的词汇文件名或正确获取点点”,https://9p.io/sys/doc/lexnames.html

代码语言: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))
	}

}
代码语言:javascript
复制
func Dir(path string) string

Dir 返回路径的最后一个元素,通常是路径的目录。在使用 Split 删除最后一个元素之后,路径被清理并删除尾部的斜杠。如果路径为空,则 Dir 返回“。”。如果路径完全由斜线和非斜线字节组成,则 Dir 会返回一个斜线。在任何其他情况下,返回的路径不会以斜杠结尾。

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.Dir("/a/b/c"))
	fmt.Println(path.Dir("a/b/c"))
	fmt.Println(path.Dir("/"))
	fmt.Println(path.Dir(""))
}
代码语言:javascript
复制
func Ext(path string) string

Ext 返回 path 使用的文件扩展名。扩展名是从路径的最后一个斜杠分隔元素中的最后一个点开始的后缀; 如果没有点,它是空的。

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.Ext("/a/b/c/bar.css"))
	fmt.Println(path.Ext("/"))
	fmt.Println(path.Ext(""))
}
代码语言:javascript
复制
func IsAbs(path string) bool

IsAbs 报告路径是否是绝对的。

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.IsAbs("/dev/null"))
}
代码语言:javascript
复制
func Join(elem ...string) string

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

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.Join("a", "b", "c"))
	fmt.Println(path.Join("a", "b/c"))
	fmt.Println(path.Join("a/b", "c"))
	fmt.Println(path.Join("", ""))
	fmt.Println(path.Join("a", ""))
	fmt.Println(path.Join("", "a"))
}
代码语言:javascript
复制
func Match(pattern, name string) (matched bool, err error)

匹配报告名称是否与 shell 文件名称模式相匹配。模式语法是:

代码语言:javascript
复制
pattern:
	{ term }
term:
	'*'         matches any sequence of non-/ characters
	'?'         matches any single non-/ character
	'[' [ '^' ] { character-range } ']'
	            character class (must be non-empty)
	c           matches character c (c != '*', '?', '\\', '[')
	'\\' c      matches character c

character-range:
	c           matches character c (c != '\\', '-', ']')
	'\\' c      matches character c
	lo '-' hi   matches character c for lo <= c <= hi

匹配需要匹配所有名称的模式,而不仅仅是一个子字符串。当模式格式错误时,唯一可能返回的错误是 ErrBadPattern 。

代码语言:javascript
复制
func Split(path string) (dir, file string)

Split 在最后一个斜杠之后立即拆分路径,将其分隔成一个目录和文件名组件。如果路径中没有斜线,Split 将返回一个空的目录并将文件设置为路径。返回的值具有 path = dir + file 的属性。

代码语言:javascript
复制
package main

import (
	"fmt"
	"path"
)

func main() {
	fmt.Println(path.Split("static/myfile.css"))
	fmt.Println(path.Split("myfile.css"))
	fmt.Println(path.Split(""))
}

子目录

Name

Synopsis

filepath

软件包文件路径以与目标操作系统定义的文件路径兼容的方式实现用于操作文件名路径的实用程序例程。

扫码关注腾讯云开发者

领取腾讯云代金券