Black Lives Matter. Support the Equal Justice Initiative.

Package filepath

import "path/filepath"
Overview
Index
Examples

Overview ▾

软件包filepath实现了实用程序例程,用于以与目标操作系统定义的文件路径兼容的方式来处理文件名路径.

文件路径包使用正斜杠或反斜杠,具体取决于操作系统. 要处理诸如URL之类的路径,无论使用什么操作系统,该路径始终使用正斜杠,请参阅路径包.

Constants

const (
    Separator     = os.PathSeparator
    ListSeparator = os.PathListSeparator
)

Variables

ErrBadPattern表示模式格式错误.

var ErrBadPattern = errors.New("syntax error in pattern")

SkipDir用作WalkFuncs的返回值,指示将跳过调用中命名的目录. 任何函数都不会将其作为错误返回.

var SkipDir = errors.New("skip this directory")

func Abs

func Abs(path string) (string, error)

Abs返回路径的绝对表示. 如果该路径不是绝对路径,它将与当前工作目录合并以将其变为绝对路径. 给定文件的绝对路径名不能保证唯一. Abs调用Clean清除结果.

func Base

func Base(path string) string

Base返回路径的最后一个元素. 在提取最后一个元素之前,先删除尾随路径分隔符. 如果路径为空,则Base返回".". 如果路径完全由分隔符组成,则Base返回单个分隔符.

Example

On Unix:
baz.js
baz
baz
dev.txt
todo.txt
..
.
/
.

func Clean

func Clean(path string) string

Clean通过纯词法处理返回与path等效的最短路径名. 它反复应用以下规则,直到无法进行进一步处理为止:

1. Replace multiple Separator elements with a single one.
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,
   assuming Separator is '/'.

仅当返回路径表示根目录时才以斜杠结尾,例如Unix上的" /"或Windows上的" C:\".

最后,任何出现的斜杠都将由分隔符替换.

如果此过程的结果为空字符串,则Clean返回字符串".".

另请参见Rob Pike," Plan 9中的词汇文件名或正确的点对点", https://9p.io/sys/doc/lexnames.html

func Dir

func Dir(path string) string

Dir返回除路径的最后一个元素以外的所有元素,通常是路径的目录. 删除最后一个元素后,Dir会在路径上调用Clean并删除斜杠. 如果路径为空,则Dir返回".". 如果路径完全由分隔符组成,则Dir返回单个分隔符. 除非它是根目录,否则返回的路径不会以分隔符结尾.

Example

On Unix:
/foo/bar
/foo/bar
/foo/bar/baz
/dirty/path
.
..
.
.
/
.
func EvalSymlinks(path string) (string, error)

在评估任何符号链接之后,EvalSymlinks返回路径名. 如果path是相对的,则结果将相对于当前目录,除非组件之一是绝对符号链接. EvalSymlinks对结果调用Clean.

func Ext

func Ext(path string) string

Ext返回路径使用的文件扩展名. 扩展名是从path的最后一个元素中的最后一个点开始的后缀; 如果没有点,则为空.

Example

No dots: ""
One dot: ".js"
Two dots: ".js"

func FromSlash

func FromSlash(path string) string

FromSlash返回用分隔符替换path中每个斜杠('/')字符的结果. 多个斜杠被多个分隔符代替.

func Glob

func Glob(pattern string) (matches []string, err error)

Glob返回所有匹配模式的文件名,如果没有匹配文件,则返回nil. 模式的语法与Match中的语法相同. 该模式可以描述诸如/ usr / * / bin / ed之类的层次结构名称(假设分隔符为'/').

Glob会忽略文件系统错误,例如读取目录的I / O错误. 模式格式错误时,唯一可能返回的错误是ErrBadPattern.

func HasPrefix

func HasPrefix(p, prefix string) bool

存在HasPrefix具有历史兼容性,因此不应使用.

不推荐使用:HasPrefix不考虑路径边界,并且在需要时不忽略大小写.

func IsAbs

func IsAbs(path string) bool

IsAbs报告该路径是否为绝对路径.

Example

On Unix:
true
false
false
false
true
false

func Join

func Join(elem ...string) string

Join将任意数量的路径元素连接到单个路径中,并使用特定于OS的Separator将其分隔. 空元素将被忽略. 结果为已清除. 但是,如果参数列表为空或其所有元素为空,则Join返回一个空字符串. 在Windows上,仅当第一个非空元素是UNC路径时,结果才是UNC路径.

Example

On Unix:
a/b/c
a/b/c
a/b/c
a/b/c

func Match

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

匹配报告名称是否与外壳文件名称模式匹配. 模式语法为:

pattern:
	{ term }
term:
	'*'         matches any sequence of non-Separator characters
	'?'         matches any single non-Separator 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.

在Windows上,转义已禁用. 而是将'\\'视为路径分隔符.

Example

On Unix:
true <nil>
false <nil>
true <nil>
true <nil>

func Rel

func Rel(basepath, targpath string) (string, error)

当使用中间分隔符将其连接到basepath时,Rel返回一个相对路径,该相对路径在词法上等效于targpath. 也就是说,Join(basepath,Rel(basepath,targpath))等同于targpath本身. 成功后,即使basepath和targpath不共享任何元素,返回的路径也始终相对于basepath. 如果无法相对于基本路径创建targpath,或者如果需要知道当前工作目录以进行计算,则会返回错误. 相对结果调用Rel.

Example

On Unix:
"/a/b/c": "b/c" <nil>
"/b/c": "../b/c" <nil>
"./b/c": "" Rel: can't make ./b/c relative to /a

func Split

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

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

Example

On Unix:
input: "/home/arnie/amelia.jpg"
	dir: "/home/arnie/"
	file: "amelia.jpg"
input: "/mnt/photos/"
	dir: "/mnt/photos/"
	file: ""
input: "rabbit.jpg"
	dir: ""
	file: "rabbit.jpg"
input: "/usr/local//go"
	dir: "/usr/local//"
	file: "go"

func SplitList

func SplitList(path string) []string

SplitList拆分由操作系统特定的ListSeparator连接的路径的列表,通常在PATH或GOPATH环境变量中找到该列表. 与string.Split不同,SplitList在传递空字符串时返回空切片.

Example

On Unix: [/a/b/c /usr/bin]

func ToSlash

func ToSlash(path string) string

ToSlash返回用斜杠('/')字符替换路径中每个分隔符的结果. 多个分隔符由多个斜杠代替.

func VolumeName

func VolumeName(path string) string

VolumeName返回前导卷名. 给定" C:\ foo \ bar",则在Windows上返回" C:". 给定" \\ host \ share \ foo",它将返回" \\ host \ share". 在其他平台上,它返回"".

func Walk

func Walk(root string, walkFn WalkFunc) error

Walk遍历以root为根的文件树,为树中的每个文件或目录(包括root)调用walkFn. walkFn过滤访问文件和目录时出现的所有错误. 这些文件以词法顺序进行遍历,这使输出具有确定性,但是这意味着对于非常大的目录,遍历可能效率不高. 步行不遵循符号链接.

Example

On Unix:
visited file or dir: "."
visited file or dir: "dir"
visited file or dir: "dir/to"
visited file or dir: "dir/to/walk"
skipping a dir without errors: skip

type WalkFunc

WalkFunc是为Walk访问的每个文件或目录调用的函数的类型. path参数包含Walk的参数作为前缀; 也就是说,如果使用" dir"(包含文件" a"的目录)调用Walk,则会使用参数" dir / a"来调用walk函数. info参数是命名路径的os.FileInfo.

如果步行到以路径命名的文件或目录时遇到问题,则传入的错误将描述该问题,并且函数可以决定如何处理该错误(步行将不会进入该目录). 如果发生错误,info参数将为nil. 如果返回错误,则处理停止. 唯一的例外是当函数返回特殊值SkipDir时. 如果该函数在目录上调用时返回SkipDir,则Walk会完全跳过目录的内容. 如果该函数在非目录文件上调用时返回SkipDir,则Walk会跳过包含目录中的其余文件.

type WalkFunc func(path string, info os.FileInfo, err error) error

by  ICOPY.SITE