🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。
📗概念
在 Go 中,处理文件路径通常使用 path/filepath 包。这个包提供了一系列的函数,用于操作和处理文件路径,特别是跨平台的路径操作。
💻代码
package mainimport (//path/filepath:提供了处理文件路径的函数,适用于不同操作系统。//strings:提供字符串处理功能。"fmt""path/filepath""strings"
)func main() {//使用 filepath.Join 将多个路径部分连接成一个完整路径。输出结果会根据操作系统的路径分隔符(如 / 或 \)自动调整。p := filepath.Join("dir1", "dir2", "filename")fmt.Println("p:", p)//处理多余的分隔符和相对路径。filepath.Join 会自动规范化路径。fmt.Println(filepath.Join("dir1//", "filename"))fmt.Println(filepath.Join("dir1/../dir1", "filename"))//filepath.Dir(p) 返回路径 p 的目录部分。fmt.Println("Dir(p):", filepath.Dir(p))//filepath.Base(p) 返回路径 p 的文件名部分。fmt.Println("Base(p):", filepath.Base(p))//filepath.IsAbs 检查路径是否是绝对路径。第一个示例返回 false(因为是相对路径),第二个示例返回 true(因为是绝对路径)。fmt.Println(filepath.IsAbs("dir/file"))fmt.Println(filepath.IsAbs("/dir/file"))filename := "config.json"//filepath.Ext(filename) 返回文件名的扩展名(.json)。ext := filepath.Ext(filename)fmt.Println(ext)//使用 strings.TrimSuffix 去除文件名的扩展名,输出结果为 config。fmt.Println(strings.TrimSuffix(filename, ext))//filepath.Rel 计算从第一个路径到第二个路径的相对路径。//返回 t/file,表示从 a/b 到 a/b/t/file 的相对路径。rel, err := filepath.Rel("a/b", "a/b/t/file")if err != nil {panic(err)}fmt.Println(rel)//计算从 a/b 到 a/c/t/file 的相对路径,返回的结果是 ../c/t/file,表示需要回到 a 目录,然后进入 c/t/file。rel, err = filepath.Rel("a/b", "a/c/t/file")if err != nil {panic(err)}fmt.Println(rel)
}
🔍理解
- filepath.Join:将多个路径部分连接成一个完整路径。
- filepath.Dir:返回路径的目录部分。
- filepath.Base:返回路径的最后一部分(文件名)。
- filepath.IsAbs:检查路径是否为绝对路径。
- filepath.Ext:返回文件名的扩展名。
- filepath.Rel:计算从一个路径到另一个路径的相对路径。
💡 Tips小知识点
跨平台:
- path/filepath 包会根据操作系统自动选择适当的路径分隔符(如 Windows 的 \ 和 Unix 的 /),因此可以编写跨平台的代码。
- 相对路径:在处理相对路径时,确保理解当前工作目录的位置,以避免路径解析错误。
💪无人扶我青云志,我自踏雪至山巅。