分享
  1. 首页
  2. 文章

golang中filepath包的使用

ck_god · · 5003 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

func Abs(path string) (string, error)

package main
import (  
    "path/filepath"
  "os"
  "fmt")
func main() {  //
  pName := os.Args[0]
  absName, err := filepath.Abs(pName)  
  if err != nil{
    fmt.Println(err)
  }
  fmt.Println(absName)
}

func Base(path string) string

package main
import (  
  "path/filepath"
  "fmt")
func main() {
  baseName := filepath.Base("/a/b/c/e.txt")
  fmt.Println(baseName)
}

func Clean(path string) string

package main
import (   
  "path/filepath"
  "fmt")
func main() {
  p := "../..//././//a/b/c.txt"
  pc := filepath.Clean(p)
  fmt.Println(pc)
}

func Dir(path string) string

package main
import (  
    "path/filepath"
  "fmt")
func main() {
  d := filepath.Dir("/a/b/c/d.txt")
  fmt.Println(d)
}

func EvalSymlinks(path string) (string, error)

package mainimport (  "path/filepath"
  "fmt")func main() {
  e, _:= filepath.EvalSymlinks("/Users/hyhu/SourcePrj/mysourceprj")
  fmt.Println(e)
}

func Ext(path string) string

package main
import (  "path/filepath"
  "fmt")
func main() {
  e := filepath.Ext("/Users/1.txt")
  fmt.Println(e)
}

func FromSlash(path string) string

package main
import (  "path/filepath"
  "fmt")
func main() {  //windows下有效果
  r := filepath.FromSlash("/a//b/c/d.txt")
  fmt.Println(r)
}

func Glob(pattern string) (matches []string, err error)

package main
import (  "path/filepath"
  "fmt")
func main() {
  m,_ := filepath.Glob("/usr/*")
  fmt.Println(m)
}

func HasPrefix(p, prefix string) bool

Go1.7中已经废弃使用

func IsAbs(path string) bool

package main
import (  
    "path/filepath"
  "fmt"
)
func main() {
  b := filepath.IsAbs("/a/b/c/d.txt")
  fmt.Println(b)
  b = filepath.IsAbs("d.txt")
  fmt.Println(b)
}

func Join(elem ...string) string

package main
import (
  "fmt"
  "path/filepath")
func main() {
  fmt.Println("On Unix:")
  fmt.Println(filepath.Join("a", "b", "c"))
  fmt.Println(filepath.Join("a", "b/c"))
  fmt.Println(filepath.Join("a/b", "c"))
  fmt.Println(filepath.Join("a/b", "/c"))
}

func Match(pattern, name string) (matched bool, err error)

package main
import (
  "path/filepath"
  "fmt")
func main() {  //windows下有效果
  m,_ := filepath. Match("/usr/*", "/usr/local")
  fmt.Println(m)
}

func Rel(basepath, targpath string) (string, error)

package main
import (
  "fmt"
  "path/filepath"
)
func main() {
  paths := []string{    "/a/b/c",    "/b/c",    "./b/c",
  }
  base := "/a"
  fmt.Println("On Unix:")  
  for _, p := range paths {
    rel, err := filepath.Rel(base, p)
    fmt.Printf("%q: %q %v\n", p, rel, err)
  }
}

func Split(path string) (dir, file string)

package main
import (  "fmt"
  "path/filepath")
func main() {
  paths := []string{    "/home/arnie/amelia.jpg",    "/mnt/photos/",    "rabbit.jpg",    "/usr/local//go",
  }
  fmt.Println("On Unix:")  
  for _, p := range paths {
    dir, file := filepath.Split(p)
    fmt.Printf("input: %q\n\tdir: %q\n\tfile: %q\n", p, dir, file)
  }
}

func SplitList(path string) []string

package main
import (
  "fmt"
  "path/filepath")
func main() {
  fmt.Println("On Unix:", filepath.SplitList("/a/b/c:/usr/bin"))
}

func ToSlash(path string) string

package main
import (  "path/filepath"
  "fmt")
func main() {  //windows下有效果
  r := filepath.ToSlash("\\a\\b\\c/d.txt")
  fmt.Println(r)
}

func VolumeName(path string) string

windows平台下
C:\foo\bar 对应的结果 C:

\\host\share\foo 对应的结果 \\host\share

package main
import (
  "path/filepath"
  "fmt")
func main() {  
    v := filepath.VolumeName("C:\foo\bar")
  fmt.Println(v)
  v = filepath.VolumeName(`\\host\share\foo"`)
  fmt.Println(v)
}

func Walk(root string, walkFn WalkFunc) error

同下

type WalkFunc

package main
import (
  "path/filepath"
  "fmt"
  "os")
func MyWalkFunc (path string, info os.FileInfo, err error) error{
  var e error
  fmt.Println(path, info.Name(), info.Size(), info.Mode(), info.ModTime())
  return e
}
func main() {
  filepath.Walk("/", MyWalkFunc)
}



有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:ck_god

查看原文:golang中filepath包的使用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5003 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏