您现在的位置是:首页 > 编程 > 

Go程序例子(67):文件路径

2025-07-21 07:07:02
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

代码语言:go复制
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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1165648.html

相关标签:无
上传时间: 2025-07-21 02:29:07
留言与评论(共有 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