filepath

package
v0.0.0-...-4416cd3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 23, 2020 License: MIT Imports: 6 Imported by: 0

README

go 1.13

Documentation

Index

Constants

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

只考虑linux

Variables

View Source
var ErrBadPattern = errors.New("syntax error in pattern")
View Source
var (
	ErrTooManyLinks = errors.New("EvalSymlinks: too many links")
)
View Source
var SkipDir = errors.New("skip this directory")

标识是否跳过本文件所在的目录,不继续扫描本文件所在的目录

Functions

func Base

func Base(path string) string

注意Base("a/") == "a" 而不是""

func Clean

func Clean(path string) string

Clean清理path中多余的字符, 且如果不是根目录最后一个字符不会是分隔符

清理规则: 1. 去除path中多余分隔符Separator 2. 忽略path中的'./'目录。 因为'./'代表当前目录 3. 去除'../'及其之前的目录,如果'../'之前存在目录的话。因为'../'代表父目录 4. 如果'../'之前是根目录的话,直接去除。因为根目录之前没有目录 如果path为空的话,返回当前目录'.'

func Dir

func Dir(path string) string

Dir path的目录,尾缀不会包含多余的分隔符。 如果path以分隔符结束的话,Dir相当于只clean末尾多余的分隔符。Dir("a/")=="a"

func EvalSymlinks(path string) (string, error)

func Glob

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

Glob 根据输入的pattern匹配所有的文件。如果没有匹配到,返回nil

Glob 递归match 1. 假定第n级dirs已经匹配,那么就需要遍历dirs调用glob匹配file,得到第n+1 dirs 2. 递归终止条件,dir已经匹配展开

func Join

func Join(elem ...string) string

func Match

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

Match 匹配

'/'分割符需要特殊处理,不能用'*'匹配 '*' 匹配任意非分隔符的字符 '?' 匹配任意一个非分割符的字符 [] 范围匹配,内不支持'*', '?'的上述作用 \\ 转义字符

func Split

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

Split以分隔符分割。 如果path以分隔符结尾,那么file=""。Split("a/b/") -> dir="a/b/", file=""

Split从右向左迭代寻找filepath分隔符'/', 而非strings.Split(path, "/") 如果存在dir即不为空,则返回的dir以'/'符号结尾

为什么用"i+1": 因为当path[i]=='/'退出for循环时,此时file应该从i+1位置开始 为什么用"i>="作为for条件: 因为以i+1为分隔,所以i的最小取值应该为-1

func Walk

func Walk(root string, walkFn WalkFunc) error

Walk 遍历root文件树,并调用walkFn对各个文件进行处理。

Types

type WalkFunc

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

WalkFunc的作用是对遍历到的file or dir进行进一步的处理,比如:过滤 该函数由Walk使用方定义

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL