【go从零单排】File Paths文件路径
🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。
📗概念
在 Go 中,处理文件路径通常使用 path/filepath 包。这个包提供了一系列的函数,用于操作和处理文件路径,特别是跨平台的路径操作。
💻代码
package main
import (
//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 的 /),因此可以编写跨平台的代码。
- 相对路径:在处理相对路径时,确保理解当前工作目录的位置,以避免路径解析错误。
💪无人扶我青云志,我自踏雪至山巅。