分享
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)
}有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信5003 次点击
下一篇:递归
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
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)
}