2017-12-17 11 views
-2

path/filepathパッケージを使用すると、ファイルパスから完全なディレクトリパスを取得できます。Golangで指定されたファイルパスのディレクトリ名(パスではない)を取得

package main 

import (
    "fmt" 
    "path/filepath" 
) 

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

しかし、パスからdirを取得するParent機能はありますか? (どのファイルのディレクトリの名前です):

// 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")) 

それは機能で行うことができない場合、どのように私は正規表現と親の名前を得るのですか?

+1

'filepath.Dir'と' filepath.Base'? – tkausl

答えて

3

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\n\tdir: %q\n\tparent: %q\n", 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から適用例)

関連する問題