Go+ 文件路径创建和解析教程(4.17)

举报
liuzhen007 发表于 2021/12/02 22:59:39 2021/12/02
【摘要】 目录 Go+ 概述 正文 导入包 Join 方法 Dir 方法 Base 方法 IsAbs 方法 Ext 方法 Rel 方法  Go+ 概述 Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处...

目录

Go+ 概述

正文

导入包

Join 方法

Dir 方法

Base 方法

IsAbs 方法

Ext 方法

Rel 方法 


Go+ 概述

Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。

正文

Go+ 提供很多文件路径创建和解析的方法,今天我们就来了解一下这方面的一些内容。

导入包

Go+ 在创建和解析文件路径时,一般会使用的工具库是 path/filepath 包,导入方式如下:


  
  1. import (
  2. "path/filepath"
  3. )

Join 方法

Join 方法可以接受若干个路径参数完成拼接,形成一个完整的路径地址,示例代码如下:


  
  1. import (
  2. "path/filepath"
  3. )
  4. p1 := filepath.Join("dir1", "test.txt")
  5. println("拼接路径 p1:", p1)
  6. p2 := filepath.Join("dir1", "dir2", "dir3", "filename")
  7. println("拼接路径 p2:", p2)

执行结果:

拼接路径 p1: dir1/test.txt
拼接路径 p2: dir1/dir2/dir3/filename

亲自试一试!

在创建文件路径时尽量使用 Join 方法,而不是手动拼接斜杆和反斜杆路径。合理使用 Join 方法还有很多别的好处,比如会自动删除多余的分隔符,起到规范文件路径的作用,示例代码如下:


  
  1. import (
  2. "path/filepath"
  3. )
  4. p1 := filepath.Join("dir1///", "filename")
  5. println("路径规范:", p1)
  6. p2 := filepath.Join("dir1//dir2//", "filename")
  7. println("路径规范:", p2)
  8. p3 := filepath.Join("dir1/../dir1/../dir2", "filename")
  9. println("路径规范:", p3)

执行结果:

路径规范: dir1/filename
路径规范: dir1/dir2/filename
路径规范: dir2/filename

亲自试一试!

Dir 方法

Dir 方法可以用于分割目录和文件的路径,返回文件所属目录的路径。

示例代码:


  
  1. import (
  2. "path/filepath"
  3. )
  4. p := filepath.Join("dir1/dir2", "filename")
  5. println("完整路径:", p)
  6. println("Dir(p):", filepath.Dir(p))

执行结果:

完整路径: dir1/dir2/filename
Dir(p): dir1/dir2

亲自试一试!

Base 方法

Base 方法可以用于分割目录和文件的路径,返回文件名称。

示例代码:


  
  1. import (
  2. "path/filepath"
  3. )
  4. p := filepath.Join("dir1/dir2", "filename")
  5. println("完整路径:", p)
  6. println("Base(p):", filepath.Base(p))

执行结果:

完整路径: dir1/dir2/filename
Base(p): filename

亲自试一试!

IsAbs 方法

IsAbs 方法可以判断当前路径是否为绝对路径,示例代码如下:


  
  1. import (
  2. "path/filepath"
  3. )
  4. println("dir/file 是绝对路径:", filepath.IsAbs("dir/file"))
  5. println("/dir/file 是绝对路径:", filepath.IsAbs("/dir/file"))

执行结果:

dir/file 是绝对路径: false
/dir/file 是绝对路径: true

亲自试一试! 

Ext 方法

Ext 方法可以获取文件后缀,注意前提是有点号分离,否则返回空,示例代码如下:


  
  1. import (
  2. "path/filepath"
  3. )
  4. file1 := "config.json"
  5. ext1 := filepath.Ext(file1)
  6. println("文件后缀:", ext1)
  7. file2 := "filename"
  8. ext2 := filepath.Ext(file2)
  9. println("文件后缀:", ext2)

执行结果:

文件后缀: .json
文件后缀: 

亲自试一试!

Rel 方法 

Rel 方法可以用来查找基础路径和目标路径之间的相对路径。如果无法使目标路径相对于基准路径进行转换,则返回错误。示例代码如下:


  
  1. import (
  2. "path/filepath"
  3. )
  4. rel, err := filepath.Rel("a/b", "a/b/t/file")
  5. if err != nil {
  6. panic(err)
  7. }
  8. println("相对路径:", rel)
  9. // 下面的例子会报错
  10. rel, err = filepath.Rel("a/b", "/c/t/file")
  11. if err != nil {
  12. panic(err)
  13. }
  14. println("相对路径:", rel)

执行结果:

相对路径: t/file
panic: Rel: can't make /c/t/file relative to a/b

goroutine 1 [running]:
main.main()
	/tmp/sandbox046661581/main.gop:13 +0x205

亲自试一试!

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。

原文链接:liuzhen.blog.csdn.net/article/details/121665704

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。