博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言学习-文件操作 path path/filepath
阅读量:6428 次
发布时间:2019-06-23

本文共 2253 字,大约阅读时间需要 7 分钟。

  hot3.png

文件操作

在 Linux 中,路径的格式为/user/bin 路径中的分隔符是/; Windos 中的路径格式 为C:\Windows路径中的分隔符是\。 而**在Go中,只认'/' **。

path 路径

1.func Base(path string) string 返回路径的最后一部分。

fmt.Println(path.Base("/usr/bin"))  //binfmt.Println(path.Base("")) //输出.fmt.Println(path.Base("C:\\Windows"))/*无法识别Windows下的路径分隔符, 将会把C:\\Windows做为一个路径 * /fmt.Println(path.Base(strings.Replace("C:\\Windows", "\\", "/", -1))) /*把\转换成/*/

2.func Clean(path string) string 返回一个跟 path 等价的短路径。一般在路径中出现./或../时 可以使用本函数,返回一个等价的路径

fmt.Println(path.Clean("/a/b/../c")) /*/a/c*/fmt.Println(path.Clean("/a/b/../././c")) /*/a/c*/

3.func Dir(path string) string 返回路径中的目录部分。也就是最后一个/前面的部分。

fmt.Println(path.Dir("/a/b/../c/d/e")) /*/a/c/d*/fmt.Println(path.Dir("/a/b/"))       /*/a/b*/

4.func Ext(path string) string 用来取文件的扩展名。

fmt.Println(path.Ext("/a/b/../c/d./e")) /*没有扩展名*/fmt.Println(path.Ext("/a/b/test.txt"))  /*.txt*/

5.func IsAbs(path string) bool 用来判断路径是否绝对路径。在 Linux 下如果路径是以/开头 的是绝对路径,如/user/bin,否则是相对路径;Windows 下,以盘符开头的是绝对路径,如 C:\Windows\system,而 Windows\system 是相对路径

fmt.Println(path.IsAbs("/a/b/c"))fmt.Println(path.IsAbs(strings.Replace("C:\\Windows\\system", "\\", "/", -1))) /*Go 只识别/所以需要转换一下*/第一个输出 true,/a/b/c 是绝对路径;第二个输出 false.C:\Windows\system 是绝对路径,但 Go 好像只支持 Linux 格式的路径,所以此处判断错误

6.func Join(elem ...string) string,用来进行路径的连接。如将 a/b,和 c 连接成 a/b/c。

fmt.Println(path.Join("a/b", "c"))/*a/b/c*/fmt.Println(path.Join("C:\\Windows", "System"))/*C:\Windows/System*/

7.func Split(path string) (dir, file string)把路径分割成目录和文件两部分。

fmt.Println(path.Split("/a/b/test.txt")) /*/a/b/ test.txt*/fmt.Println(path.Split("/a/b/c/"))       /*/a/b/c/ */fmt.Println(path.Split("/a/b/c"))       /*/a/b/   c */

filepath

1.func Abs(path string) (string, error)用来把相对路径转换成绝对路径,该函数位于 path/filepath 包中

fmt.Println(filepath.Abs(".")) /*当前文件所在目录*/

2.func Walk(root string, walkFn WalkFunc) error,用来遍历 root 目录下的所有文件和子目录。

//WalkFunc 是一个函数类型,定为 type WalkFunc func(path string, info os.FileInfo, err error) error,path 为当前文件或文件侠的完整路径,info 是 os.FileInfo 结构的表示package mainimport (	"fmt"	"os"	"path/filepath")func DispFile(path string, info os.FileInfo, err error) error {	fmt.Println(path, "-------", info.Name(), "------", info.IsDir())	return nil}func main() {	filepath.Walk(".", DispFile)}

转载于:https://my.oschina.net/solate/blog/719188

你可能感兴趣的文章
思杰的雄心——软件定义的工作空间
查看>>
Servlet的多线程和线程安全
查看>>
存储树形的数据表转为Json
查看>>
CAN 总线通信控制芯片SJA1000 的读写
查看>>
oauth授权协议的原理
查看>>
OutputCache说明
查看>>
sdl2.0示例
查看>>
数学 --- 高斯消元 POJ 1830
查看>>
Ejabberd源码解析前奏--集群
查看>>
[ZHUAN]Flask学习记录之Flask-SQLAlchemy
查看>>
【转】Install SmartGit via PPA in Ubuntu 13.10/13.04/12.04/Linux Mint
查看>>
PNG怎么转换成32位的BMP保持透明
查看>>
经验分享:CSS浮动(float,clear)通俗讲解
查看>>
WTL中最简单的实现窗口拖动的方法(转)
查看>>
数据结构—队列
查看>>
C. Adidas vs Adivon
查看>>
BZOJ4241 : 历史研究
查看>>
(LeetCode)两个队列来实现一个栈
查看>>
[WebGL入门]十九,遮挡剔除和深度測试
查看>>
Codeforces 220B - Little Elephant and Array 离线树状数组
查看>>