获取Golang中给定文件路径的目录名称(不是路径)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Golang中给定文件路径的目录名称(不是路径)相关的知识,希望对你有一定的参考价值。

通过使用带有以下示例的path/filepath包,您可以从文件路径获取完整目录路径。

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Output: /path/to/dir
    fmt.Println(filepath.Dir("/path//to/dir/file.ext"))
}

但是有没有Parent函数从路径获得dir? (这是文件目录的名称):

// The `Parent` is what I want,
// and this is a pseudo-code example, this won't actually work.
//
// Output: dir
fmt.Println(filepath.Parent("/path//to/dir/file.ext"))

如果无法使用函数完成,如何使用RegExp获取父级的名称?

答案

您可以使用filepath.Base获取目录的最后一个元素。例如:

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    paths := []string{
        "/home/arnie/amelia.jpg",
        "/mnt/photos/",
        "rabbit.jpg",
        "/usr/local//go",
    }
    for _, p := range paths {
        dir := filepath.Dir(p)
        parent := filepath.Base(dir)
        fmt.Printf("input: %q
	dir: %q
	parent: %q
", p, dir, parent)
    }
}

返回:

input: "/home/arnie/amelia.jpg"
    dir: "/home/arnie"
    parent: "arnie"
input: "/mnt/photos/"
    dir: "/mnt/photos"
    parent: "photos"
input: "rabbit.jpg"
    dir: "."
    parent: "."
input: "/usr/local//go"
    dir: "/usr/local"
    parent: "local"

(例子改编自filepath examples

以上是关于获取Golang中给定文件路径的目录名称(不是路径)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?

从类路径目录中获取资源列表

go获取项目路径

文件属性操作

golang中文件以及文件夹路径相关操作

路径中获取文件全路径目录扩展名文件名称