path

import “path”

简介

包path实现了操作斜线分隔型路径的实用程序.

概览

包path实现了操作斜线分隔型路径的实用程序.

变量

  1. var ErrBadPattern = errors.New("syntax error in pattern")
  2. // 表示匹配模型无法识别

func Base

  1. func Base(path string) string

Base返回路径的最后一个元素.在提取最后一个元素之前已经去除了末尾斜线.如果path是空的,Base返回”.”.如果path只包含斜线,那么Base返回”/“.

func Clean

  1. func Clean(path string) string

Clean返回经过纯粹的词法处理后的跟path等效的最短路径.它迭代应用以下规则直到不能再进行更多处理:

  1. 使用一个斜线替代多个斜线
  2. 去除每个 . 路径名元素(当前目录)
  3. 去除每个 .. 路径名元素(父目录),除非在 .. 之前没有其它元素.
  4. 去除根目录开始的 .. 元素:就是,在路径开始部分替换”/..”为”/“

只有根目录”/“时返回的路径才会以斜线结尾.

如果处理后的结果是一个空字符串,Clean返回字符串”.”.

可以再参考Rob Pike的文档Lexical File Names in Plan 9 or Getting Dot-Dot Right

func Dir

  1. func Dir(path string) string

Dir返回path除了最后一个元素的其它部分,通常就是path的目录部分.使用Split去掉最后一个元素后,path会再进行Clean处理和去除末尾的斜线.如果path是空的,Dir返回”.”.
如果path在非斜线字符后部分全部是斜线,那么Dir返回一个斜线.在其它任何情况下,返回的路径不会以斜线结尾.

func Ext

  1. func Ext(path string) string

Ext返回路径中使用的文件扩展名.path以斜线进行分隔,最后一个元素的最后一个点之后的部分就是扩展;如果路径中没有点,扩展名就是空的.

func IsAbs

  1. func IsAbs(path string) bool

IsAbs判断路径是否是绝对路径.

func Join

  1. func Join(elem ...string) string

Join把任意数量的路径元素拼接成一个单一路径,根据需要加上分隔的斜线.结果是经过Clean处理;需要特别注意,全部空字符串会被忽略.

func Match

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

Match判断name是否匹配shell文件名模板.模板语法是:

  1. pattern:
  2. { term }
  3. term:
  4. '*' matches any sequence of non-/ characters
  5. '?' matches any single non-/ character
  6. '[' [ '^' ] { character-range } ']'
  7. character class (must be non-empty)
  8. c matches character c (c != '*', '?', '\\', '[')
  9. '\\' c matches character c
  10. character-range:
  11. c matches character c (c != '\\', '-', ']')
  12. '\\' c matches character c
  13. lo '-' hi matches character c for lo <= c <= hi

Match要求模板匹配名字的整个部分,不仅仅是其中一个子串.唯一有可能返回的错误是ErrBadPattern,当模板是错误的.

func Split

  1. func Split(path string) (dir, file string)

Split根据最后一个斜线对路径进行切割,分成路径部分和文件名部分.如果是不带斜线的path参数,Split返回一个空的目录部分,整个参数path作为文件名.返回的值有这样的属性 path = dir + file.