jsp网站开发学习心得,长安营销型网站建设,免费行情的软件入口下载,校园网网站的安全建设方案文章目录 前言一、常用方法示例1.将相对路径转换为绝对路径2.获取路径中最后一个元素3.获取路径中除去最后一个元素的部分4.路径拼接5.将路径拆分为目录和文件名两部分6.返回一个相对路径7.文件路径遍历8.根据文件扩展名过滤文件9.使用正则表达式进行路径匹配 前言
path/filep… 文章目录 前言一、常用方法示例1.将相对路径转换为绝对路径2.获取路径中最后一个元素3.获取路径中除去最后一个元素的部分4.路径拼接5.将路径拆分为目录和文件名两部分6.返回一个相对路径7.文件路径遍历8.根据文件扩展名过滤文件9.使用正则表达式进行路径匹配 前言
path/filepath包是一个非常重要的工具包,它提供了一系列函数用于操作和处理文件路径。在实际运维工具开发中肯定会涉及构建文件路径、解析路径中的各个部分、还是遍历目录树、读取文件等操作,path/filepath包都提供了便捷的方法来实现这些功能。 参考文档: https://pkg.go.dev/path/filepath 一、常用方法示例
1.将相对路径转换为绝对路径 代码如下示例 func Abs(path string) (string, error)
使用Abs方法实现,接收一个string类型参数返回string类型和错误package mainimport (fmtpath/filepath
)func main() {//相对路径relativePath : ./graylog/docker-compose.ymlabsolutePath, err : filepath.Abs(relativePath)if err ! nil {fmt.Println(Error:, err)}//绝对路径fmt.Println(Absolute Path:, absolutePath)
}2.获取路径中最后一个元素 代码如下示例 // func Base(path string) string
// 如果路径为空字符串Base返回.
// 相当于获取目录下的子文件或子目录
package mainimport (fmtpath/filepath
)func main() {relativePath : /var/log/messageabsolutePath : filepath.Base(relativePath)fmt.Println(Absolute Path:, absolutePath)
}3.获取路径中除去最后一个元素的部分 代码如下示例 // func Dir(path string) string
// Dir函数返回路径中除去最后一个元素的部分,即路径的目录部分。如果路径为空字符串Dir返回.
// 相当于获取某个文件或目录的父级目录
package mainimport (fmtpath/filepath
)func main() {relativePath : /export/graylog/es_dataabsolutePath : filepath.Dir(relativePath)fmt.Println(Absolute Path:, absolutePath)
}4.路径拼接 代码如下示例 func Join(elem ...string) string
// 将任意数量的路径元素连接成一个单一路径并根据需要添加斜杠package mainimport (fmtpath/filepath
)func main() {path1 : /export/graylogpath2 : es_datafullPath : filepath.Join(path1, path2)fmt.Println(Full Path:, fullPath)
}5.将路径拆分为目录和文件名两部分 代码如下示例 func Split(path string) (dir, file string)package mainimport (fmtpath/filepath
)func main() {path : /export/graylog/docker-compose.ymldir, file : filepath.Split(path)fmt.Println(Directory:, dir)fmt.Println(File:, file)
}6.返回一个相对路径 代码如下示例 func Rel(basepath, targpath string) (string, error)
// 将base目录作为起点目标目录作为终点package mainimport (fmtpath/filepath
)func main() {basepath : /exporttargpath : /export/graylog/docker-compose.ymlrelativePath, err : filepath.Rel(basepath, targpath)if err ! nil {fmt.Println(Error:, err)}fmt.Println(Relative Path:, relativePath)
}7.文件路径遍历 代码如下示例 // Walk和WalkDir函数用于遍历指定目录下的所有文件和子目录并在遍历过程中打印每个访问的路径
func Walk(root string, walkFn WalkFunc) error
func WalkDir(root string, walkFn WalkDirFunc) errorpackage mainimport (fmtospath/filepath
)func main() {root : /export/graylogerr : filepath.Walk(root, func(path string, info os.FileInfo, err error) error {if err ! nil {return err}fmt.Println(Visited:, path)return nil})if err ! nil {fmt.Println(Error:, err)}
}8.根据文件扩展名过滤文件 代码如下示例 // 在WalkFunc中添加条件来过滤特定扩展名的文件
package mainimport (fmtospath/filepath
)func main() {root : /exporterr : filepath.Walk(root, func(path string, info os.FileInfo, err error) error {if err ! nil {return err}if filepath.Ext(path) .yml {fmt.Println(Visited:, path)}return nil})if err ! nil {fmt.Println(Error:, err)}
}9.使用正则表达式进行路径匹配 代码如下示例 package mainimport (fmtospath/filepathregexp
)func main() {// 目录路径dir : /export/graylog// 正则表达式用来匹配 .yml 或 .xml 结尾的文件pattern : \.yml$|\.xml$re, err : regexp.Compile(pattern)if err ! nil {fmt.Println(Error compiling regex:, err)return}// 使用 filepath.Walk 遍历目录及子目录err filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {if err ! nil {fmt.Println(Error walking path:, err)return err}// 如果是文件且符合后缀名要求进行匹配if !info.IsDir() re.MatchString(info.Name()) {fmt.Println(Matched file:, path)}return nil})if err ! nil {fmt.Println(Error during Walk:, err)}
}