前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Go程序例子(67):文件路径

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

原创
作者头像
用户11078756
发布2025-01-20 10:57:46
发布2025-01-20 10:57:46
8700
代码可运行
举报
文章被收录于专栏:go程序例子
运行总次数:0
代码可运行

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档