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

74次阅读
没有评论

共计 4076 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要介绍了 golang 的 filepath 包的几个函数的细微区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

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

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“golang 的 filepath 包的几个函数的细微区别是什么”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4076字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)