Go程序例子(67):文件路径
Go程序例子(67):文件路径
filepath 包提供了用于解析和构建文件路径的函数,这些函数可以在不同操作系统之间移植使用。例如,Linux 上的路径格式是 dir/file,而 Windows 上是 dir\\file。代码语言:go复制package main
import (
"fmt"
"path/filepath"
&
Go程序例子(67):文件路径
filepath
包提供了用于解析和构建文件路径的函数,这些函数可以在不同操作系统之间移植使用。例如,Linux 上的路径格式是 dir/file
,而 Windows 上是 dir\\file
。
package main
import (
"fmt"
"path/filepath"
"strings"
)
func main() {
// 使用 Join 来以可移植的方式构建路径。它接受任意数量的参数,并根据这些参数构建一个层次化的路径。
p := filepath.Join("dir1", "dir2", "filename")
fmt.Println("p:", p)
// 你应该始终使用 Join,而不是手动拼接 / 或 \\。除了提供可移植性外,Join 还会通过删除多余的路径分隔符和目录更改来规范化路径。
fmt.Println(filepath.Join("dir1//", "filename"))
fmt.Println(filepath.Join("dir1/../dir1", "filename"))
// Dir 和 Base 可以用来将路径拆分为目录和文件部分。或者,你也可以使用 Split,它会在一次调用中同时返回这两部分。
fmt.Println("Dir(p):", filepath.Dir(p))
fmt.Println("Base(p):", filepath.Base(p))
// 我们可以检查一个路径是否是绝对路径。
fmt.Println(filepath.IsAbs("dir/file"))
fmt.Println(filepath.IsAbs("/dir/file"))
filename := "config.json"
// 某些文件名在点号后带有扩展名。我们可以使用 Ext 将扩展名从这些文件名中分离出来。
ext := filepath.Ext(filename)
fmt.Println(ext)
// 要获取不带扩展名的文件名,可以使用 strings.TrimSuffix。
fmt.Println(strings.TrimSuffix(filename, ext))
// Rel 用于查基准路径和目标路径之间的相对路径。如果目标路径无法相对于基准路径表示,它将返回一个错误。
rel, err := filepath.Rel("a/b", "a/b/t/file")
if err != nil {
panic(err)
}
fmt.Println(rel)
rel, err = filepath.Rel("a/b", "a/c/t/file")
if err != nil {
panic(err)
}
fmt.Println(rel)
}
运行结果:
代码语言:javascript代码运行次数:0运行复制➜ go run file-paths/file-paths.go
p: dir1/dir2/filename
dir1/filename
dir1/filename
Dir(p): dir1/dir2
Base(p): filename
false
true
.json
config
t/file
../c/t/file
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-21 02:29:07
上一篇:AI英语口语App的开发
下一篇:Go程序例子(66):行过滤器
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 斗战神黑屏 | 22分钟前 发表 |
ext | |
本站网友 西安大唐移动 | 25分钟前 发表 |
而不是手动拼接 / 或 \\ | |
本站网友 南京月租房 | 30分钟前 发表 |
而不是手动拼接 / 或 \\ | |
本站网友 美好尚郡 | 21分钟前 发表 |
fmt.Println(filepath.IsAbs("dir/file")) fmt.Println(filepath.IsAbs("/dir/file")) filename | |
本站网友 camfrog | 4分钟前 发表 |
= filepath.Rel("a/b" | |
本站网友 如何治眼袋 | 15分钟前 发表 |
fmt.Println(filepath.IsAbs("dir/file")) fmt.Println(filepath.IsAbs("/dir/file")) filename |