golang的filepath包的几个函数的细微区别

golang的filepath包的几个函数的细微区别

Clean(),Dir(),ABS()配合Walk()使用的时候,由于前三个函数返回值的细微差别,会造成遍历目录的时候,得到的结果不一样.
filepath.Abs("./myDoc")
//返回所给路径的绝对路径
这时候遍历没有问题,

2019/06/12 10:50:31 监控 : 1, D:\workspace\go-wikitten\src\myDoc
2019/06/12 10:50:31 文件 : 2, myDoc\.gitkeep
2019/06/12 10:50:31 文件 : 3, myDoc\Sample HTML document.html
2019/06/12 10:50:31 文件 : 4, myDoc\Sample Markdown document.md
2019/06/12 10:50:31 监控 : 5, D:\workspace\go-wikitten\src\myDoc\code snippets (expand me!)
2019/06/12 10:50:31 文件 : 6, myDoc\code snippets (expand me!)\Bash.sh
2019/06/12 10:50:31 文件 : 7, myDoc\code snippets (expand me!)\CSS.css
2019/06/12 10:50:31 文件 : 8, myDoc\code snippets (expand me!)\JavaScript.js
2019/06/12 10:50:31 文件 : 9, myDoc\code snippets (expand me!)\PHP.php
2019/06/12 10:50:31 文件 : 10, myDoc\code snippets (expand me!)\Python.py
2019/06/12 10:50:31 文件 : 11, myDoc\code snippets (expand me!)\Ruby.rb
2019/06/12 10:50:31 文件 : 12, myDoc\code snippets (expand me!)\SQL.sql
2019/06/12 10:50:31 文件 : 13, myDoc\code snippets (expand me!)\Scheme.scm
2019/06/12 10:50:31 文件 : 14, myDoc\code snippets (expand me!)\XML.xml
2019/06/12 10:50:31 文件 : 15, myDoc\index.md
2019/06/12 10:50:31 监控 : 16, D:\workspace\go-wikitten\src\myDoc\you can also
2019/06/12 10:50:31 监控 : 17, D:\workspace\go-wikitten\src\myDoc\you can also\nest directories
2019/06/12 10:50:31 文件 : 18, myDoc\you can also\nest directories\binary files are OK too.jpg

path.Clean("./myDoc"));
//返回等价的最短路径
//1.用一个斜线替换多个斜线
//2.清除当前路径.
//3.清除内部的…和他前面的元素
//4.以/…开头的,变成/
由于我的目录不存在1,3,4的情况,所以遍历也是符合我的期望,只是把绝对路径换成了相对路径

2019/06/12 10:56:18 监控 : 1, myDoc
2019/06/12 10:56:18 文件 : 2, myDoc\.gitkeep
2019/06/12 10:56:18 文件 : 3, myDoc\Sample HTML document.html
2019/06/12 10:56:18 文件 : 4, myDoc\Sample Markdown document.md
2019/06/12 10:56:18 监控 : 5, myDoc\code snippets (expand me!)
2019/06/12 10:56:18 文件 : 6, myDoc\code snippets (expand me!)\Bash.sh
2019/06/12 10:56:18 文件 : 7, myDoc\code snippets (expand me!)\CSS.css
2019/06/12 10:56:18 文件 : 8, myDoc\code snippets (expand me!)\JavaScript.js
2019/06/12 10:56:18 文件 : 9, myDoc\code snippets (expand me!)\PHP.php
2019/06/12 10:56:18 文件 : 10, myDoc\code snippets (expand me!)\Python.py
2019/06/12 10:56:18 文件 : 11, myDoc\code snippets (expand me!)\Ruby.rb
2019/06/12 10:56:18 文件 : 12, myDoc\code snippets (expand me!)\SQL.sql
2019/06/12 10:56:18 文件 : 13, myDoc\code snippets (expand me!)\Scheme.scm
2019/06/12 10:56:18 文件 : 14, myDoc\code snippets (expand me!)\XML.xml
2019/06/12 10:56:18 文件 : 15, myDoc\index.md
2019/06/12 10:56:18 监控 : 16, myDoc\you can also
2019/06/12 10:56:18 监控 : 17, myDoc\you can also\nest directories
2019/06/12 10:56:18 文件 : 18, myDoc\you can also\nest directories\binary files are OK too.jpg

path.Dir("./myDoc"));
//返回路径最后一个元素的目录
//路径为空则返回.
这个遍历,刚开始的时候,我以为是正确的,后面才发现不对了.
首先,额外监控了给定目录的父目录,也就是myDoc的父目录,参见第一行输出
其次,如果目录下没有文件,接着还是目录,参见输出的17和18行,遍历的时候跳过去了

2019/06/12 10:48:30 监控 : 1, .
2019/06/12 10:48:30 文件 : 2, myDoc\.gitkeep
2019/06/12 10:48:30 文件 : 3, myDoc\Sample HTML document.html
2019/06/12 10:48:30 文件 : 4, myDoc\Sample Markdown document.md
2019/06/12 10:48:30 监控 : 5, myDoc
2019/06/12 10:48:30 文件 : 6, myDoc\code snippets (expand me!)\Bash.sh
2019/06/12 10:48:30 文件 : 7, myDoc\code snippets (expand me!)\CSS.css
2019/06/12 10:48:30 文件 : 8, myDoc\code snippets (expand me!)\JavaScript.js
2019/06/12 10:48:30 文件 : 9, myDoc\code snippets (expand me!)\PHP.php
2019/06/12 10:48:30 文件 : 10, myDoc\code snippets (expand me!)\Python.py
2019/06/12 10:48:30 文件 : 11, myDoc\code snippets (expand me!)\Ruby.rb
2019/06/12 10:48:30 文件 : 12, myDoc\code snippets (expand me!)\SQL.sql
2019/06/12 10:48:30 文件 : 13, myDoc\code snippets (expand me!)\Scheme.scm
2019/06/12 10:48:30 文件 : 14, myDoc\code snippets (expand me!)\XML.xml
2019/06/12 10:48:30 文件 : 15, myDoc\index.md
2019/06/12 10:48:30 监控 : 16, myDoc
2019/06/12 10:48:30 监控 : 17, myDoc\you can also
2019/06/12 10:48:30 文件 : 18, myDoc\you can also\nest 
directories\binary files are OK too.jpg

※部分文章来源于网络,如有侵权请联系删除;更多文章和资料|点击后方文字直达 ↓↓↓
100GPython自学资料包
阿里云K8s实战手册
阿里云CDN排坑指南
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册
云原生架构白皮书
Zabbix企业级分布式监控系统源码文档
10G大厂面试题戳领

猜你喜欢

转载自blog.csdn.net/weixin_43507410/article/details/121445398