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

举报
liuzhen007 发表于 2022/02/25 23:47:56 2022/02/25
【摘要】 ​目录Go+ 概述正文导入包Join 方法Dir 方法Base 方法IsAbs 方法Ext 方法Rel 方法 Go+ 概述Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。正文Go+ 提供很多文件路径创建和解析的方法,...

目录


Go+ 概述

正文

导入包

Join 方法

Dir 方法

Base 方法

IsAbs 方法

Ext 方法

Rel 方法 


Go+ 概述

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

正文

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

导入包

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

import (
    "path/filepath"
)

Join 方法

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

import (
    "path/filepath"
)

p1 := filepath.Join("dir1", "test.txt")
println("拼接路径 p1:", p1)

p2 := filepath.Join("dir1", "dir2", "dir3", "filename")
println("拼接路径 p2:", p2)

执行结果:

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

亲自试一试!

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

import (
    "path/filepath"
)

p1 := filepath.Join("dir1///", "filename")
println("路径规范:", p1)

p2 := filepath.Join("dir1//////dir2//", "filename")
println("路径规范:", p2)

p3 := filepath.Join("dir1/../dir1/../dir2", "filename")
println("路径规范:", p3)

执行结果:

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

亲自试一试!

Dir 方法

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

示例代码:

import (
    "path/filepath"
)

p := filepath.Join("dir1/dir2", "filename")
println("完整路径:", p)

println("Dir(p):", filepath.Dir(p))

执行结果:

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

亲自试一试!

Base 方法

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

示例代码:

import (
    "path/filepath"
)

p := filepath.Join("dir1/dir2", "filename")
println("完整路径:", p)

println("Base(p):", filepath.Base(p))

执行结果:

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

亲自试一试!

IsAbs 方法

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

import (
    "path/filepath"
)

println("dir/file 是绝对路径:", filepath.IsAbs("dir/file"))
println("/dir/file 是绝对路径:", filepath.IsAbs("/dir/file"))

执行结果:

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

亲自试一试! 

Ext 方法

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

import (
    "path/filepath"
)

file1 := "config.json"
ext1 := filepath.Ext(file1)
println("文件后缀:", ext1)

file2 := "filename"
ext2 := filepath.Ext(file2)
println("文件后缀:", ext2)

执行结果:

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

亲自试一试!

Rel 方法 

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

import (
    "path/filepath"
)

rel, err := filepath.Rel("a/b", "a/b/t/file")
if err != nil {
    panic(err)
}
println("相对路径:", rel)

// 下面的例子会报错
rel, err = filepath.Rel("a/b", "/c/t/file")
if err != nil {
    panic(err)
}
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

亲自试一试!



作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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