Go-标准库-path

2023-04-22 10:21:16 浏览数 (1)

Go语言标准库中的path包提供了许多有用的函数,用于处理文件路径和目录路径。

路径拼接

path包中的Join函数可以将多个路径拼接成一个完整的路径,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	dir := "/usr/local"
	file := "bin/go"
	fullPath := path.Join(dir, file)
	fmt.Println(fullPath)
}

上面的代码输出为/usr/local/bin/go。Join函数会自动添加路径分隔符,同时也会去除多余的分隔符。

路径分割

path包中的Split函数可以将路径分割成目录和文件名两部分,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	path := "/usr/local/bin/go"
	dir, file := path.Split(path)
	fmt.Println("dir:", dir)
	fmt.Println("file:", file)
}

上面的代码输出为:

代码语言:javascript复制
dir: /usr/local/bin/
file: go

获取文件名和扩展名

path包中的Base函数可以获取路径中的文件名,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	path := "/usr/local/bin/go"
	fileName := path.Base(path)
	fmt.Println("fileName:", fileName)
}

上面的代码输出为go。如果路径以斜杠结尾,则返回空字符串。

path包中的Ext函数可以获取路径中的扩展名,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	path := "/usr/local/bin/go.exe"
	ext := path.Ext(path)
	fmt.Println("ext:", ext)
}

上面的代码输出为.exe

判断是否为绝对路径

path包中的IsAbs函数可以判断路径是否为绝对路径,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	absPath := "/usr/local/bin/go"
	relPath := "bin/go"
	fmt.Println("IsAbs:", path.IsAbs(absPath))
	fmt.Println("IsAbs:", path.IsAbs(relPath))
}

上面的代码输出为:

代码语言:javascript复制
IsAbs: true
IsAbs: false

获取相对路径

path包中的Rel函数可以获取两个路径之间的相对路径,如下所示:

代码语言:javascript复制
package main

import (
	"fmt"
	"path"
)

func main() {
	basePath := "/usr/local"
	targetPath := "/usr/local/bin/go"
	relPath, err := path.Rel(basePath, targetPath)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("relPath:", relPath)
}

上面的代码输出为bin/go

go

0 人点赞