1. Ext 方法

方法签名
func Ext(path string) string

path/filepath 包下的 Ext 方法是用于处理文件路径的标准工具,可以提取文件路径中的扩展名。该方法接收一个路径字符串 path,返回该路径中最后一个元素(通常是文件名)的扩展名。

  • 返回值格式:返回的字符串包含点号
  • 无扩展名:如果路径中没有扩展名,返回空字符串 “”

使用示例:

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // 1. 普通文件
    path1 := "/home/user/docs/report.pdf"
    ext1 := filepath.Ext(path1)
    fmt.Printf("扩展名: %s\n", ext1) // 输出: .pdf

    // 2. 没有扩展名的文件
    path2 := "/var/log/syslog"
    ext2 := filepath.Ext(path2)
    fmt.Printf("扩展名: '%s'\n", ext2) // 输出: '' (空字符串)

    // 3. 多个点号的情况 (只取最后一个点号之后的内容)
    path3 := "archive.tar.gz"
    ext3 := filepath.Ext(path3)
    fmt.Printf("扩展名: %s\n", ext3) // 输出: .gz
}

2. Join 方法

path/filepath 包下的 Join 方法可以将多个路径片段智能地拼接成一个完整的路径。它可以根据当前操作系统自动选择正确的路径分隔符(Windows 下用 \ ,Linux/macOS 下用 / ),从而避免硬编码分隔符导致的兼容性问题。

方法签名
func Join(elem ...string) string

该方法接收任意数量的字符串参数,将其拼接起来,其中如果片段之间缺少分隔符,会自动添加,也会移除多余的分隔符和当前目录符号。

使用示例:

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // 1. 基础拼接
    path1 := filepath.Join("data", "logs", "app.log")
    fmt.Println(path1) 
    // Linux/macOS 输出: data/logs/app.log
    // Windows 输出: data\logs\app.log

    // 2. 处理多余的分隔符 (自动清理)
    path2 := filepath.Join("data//", "logs") 
    // 输出: data/logs (多余的 / 被去掉了)

    // 3. 忽略空字符串
    path3 := filepath.Join("data", "", "app.log")
    // 输出: data/app.log (空字符串被忽略)
}

Categories:

Tags:

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注