Go言語(golang) filepathでパスを扱う
filepathパッケージを使用したパスの扱い方と、使わずに分割してみたりする。
filepathパッケージを使ってパスを分割
package main import ( "path/filepath" ) func main() { name := "/path/to/dir/filename.txt" extname := filepath.Ext(name) println(extname) // .txt basename := filepath.Base(name) println(basename) // filename.txt dirname := filepath.Dir(name) println(dirname) // /path/to/dir dirname, basename = filepath.Split(name) println(basename) // filename.txt println(dirname) // /path/to/dir/ (Dir と違って最後に / が付いてる) }
filepathパッケージを使用せずに分割
forでパスをディレクトリ、ファイル名(拡張子あり)、ファイル名(拡張子なし)、拡張子に分割(Windowsは無視)
package main func main() { name := "/path/to/dir/filename.txt" begin, end := 0, 0 for i := len(name) - 1; i >= 0; i-- { if name[i] == '/' { begin = i + 1 break } if name[i] == '.' { end = i } } println(name[begin:]) // filename.txt println(name[begin:end]) // filename println(name[:begin]) // /path/to/dir/ println(name[end:]) // .txt }