©
Ce document utilise Manuel du site Web PHP chinois Libérer
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
match.go path.go
ErrBadPattern 表示通配模式格式错误。
var ErrBadPattern = errors.New("syntax error in pattern")
func Base(path string) string
Base 返回路径的最后一个元素。在提取最后一个元素之前删除尾部斜杠。如果路径为空,则 Base 返回“。”。如果路径完全由斜线组成,则 Base 返回“/”。
package mainimport ("fmt""path")func main() { fmt.Println(path.Base("/a/b")) fmt.Println(path.Base("/")) fmt.Println(path.Base(""))}
func Clean(path string) string
Clean 通过纯词法处理返回等价于路径的最短路径名。它反复应用以下规则,直到不能进行进一步的处理:
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 将返回字符串“。”。
package mainimport ("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))}}
func Dir(path string) string
Dir 返回路径的最后一个元素,通常是路径的目录。在使用 Split 删除最后一个元素之后,路径被清理并删除尾部的斜杠。如果路径为空,则 Dir 返回“。”。如果路径完全由斜线和非斜线字节组成,则 Dir 会返回一个斜线。在任何其他情况下,返回的路径不会以斜杠结尾。
package mainimport ("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(""))}
func Ext(path string) string
Ext 返回 path 使用的文件扩展名。扩展名是从路径的最后一个斜杠分隔元素中的最后一个点开始的后缀; 如果没有点,它是空的。
package mainimport ("fmt""path")func main() { fmt.Println(path.Ext("/a/b/c/bar.css")) fmt.Println(path.Ext("/")) fmt.Println(path.Ext(""))}
func IsAbs(path string) bool
IsAbs 报告路径是否是绝对的。
package mainimport ("fmt""path")func main() { fmt.Println(path.IsAbs("/dev/null"))}
func Join(elem ...string) string
Join 将任意数量的路径元素加入到单个路径中,如有必要添加分隔斜线。结果是 Cleaned; 特别是,所有空串都被忽略。
package mainimport ("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"))}
func Match(pattern, name string) (matched bool, err error)
匹配报告名称是否与 shell 文件名称模式相匹配。模式语法是:
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 。
func Split(path string) (dir, file string)
Split 在最后一个斜杠之后立即拆分路径,将其分隔成一个目录和文件名组件。如果路径中没有斜线,Split 将返回一个空的目录并将文件设置为路径。返回的值具有 path = dir + file 的属性。
package mainimport ("fmt""path")func main() { fmt.Println(path.Split("static/myfile.css")) fmt.Println(path.Split("myfile.css")) fmt.Println(path.Split(""))}
Name | Synopsis |
---|