您当前的位置: 首页 > 

慕晨sekurlsa

暂无认证

  • 2浏览

    0关注

    82博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Go的path包和filepath包学习

慕晨sekurlsa 发布时间:2022-08-09 23:49:03 ,浏览量:2

path包和filepath包的学习 path包

直接看实例:

package main

import (
	"fmt"
	"path"
)

func main() {

	//返回路径的最后一个元素
	fmt.Println("path.Base")
	fmt.Println(path.Base("./a/b/c"))
	fmt.Println(path.Base("\\a\\b\\c"))
	fmt.Println(path.Base(""))
	fmt.Println(path.Base("///"))
	fmt.Println()


	//返回等价的最短路径
	//1.用一个斜线替换多个斜线
	//2.清除当前路径.
	//3.清除内部的..和他前面的元素
	//4.以/..开头的,变成/
	fmt.Println("path.Clean")
	fmt.Println(path.Clean("./a/b/../"))
	fmt.Println(path.Clean("../a/../b/../"))
	fmt.Println(path.Clean("/a///b///c/"))
	fmt.Println()

	//返回最后一个目录分隔符之前的路径
	//路径为空则返回.
	//最后调用了clean输出
	fmt.Println("path.Dir")
	fmt.Println(path.Dir("./a/b/c"))
	fmt.Println(path.Dir(""))
	fmt.Println(path.Dir("../a///b//../c//d../"))
	fmt.Println()

	//返回路径中的扩展名
	//如果没有点,返回空
	fmt.Println("path.Ext")
	fmt.Println(path.Ext("./a/b/c/d.jpg"))
	fmt.Println(path.Ext("/a/b.txt"))
	fmt.Println()

	//判断路径是不是绝对路径
	fmt.Println("path.IsAbs")
	fmt.Println(path.IsAbs("./a/b/c"))
	fmt.Println(path.IsAbs("/a/b/c"))
	fmt.Println()

	//连接路径
	//返回已经clean过的路径
	fmt.Println("path.Join")
	fmt.Println(path.Join("./a", "/b/../c", "../d/c/f/g","/a"))
	fmt.Println(path.Join("./a", "b/c", "../d/"))
	fmt.Println(path.Join(""))
	fmt.Println()


	//匹配文件名,完全匹配则返回true
	fmt.Println("path.Match")
	fmt.Println(path.Match("*", "a"))
	fmt.Println(path.Match("/a/b/c/123.txt", "123.txt"))
	fmt.Println(path.Match("/a/b/c/123.txt", "/a/b/c/123.txt"))
	fmt.Println(path.Match("\\b", "b"))
	fmt.Println()

	//分割路径中的目录与文件
	fmt.Println("path.Split")
	fmt.Println(path.Split("./a/b/c/d.jpg"))
	fmt.Println(path.Split("./a/b/c.txt/d.jpg"))

}

其中path.Dir和path.Join最后都是调用clean来返回。

filepath包

filepath包里有很多的作用都是和path里的类似:

package main

import (
	"fmt"
	"os"
	"path/filepath"
)


func main() {

	//返回所给路径的绝对路径
	fmt.Println("filepath.Abs")
	path, _ := filepath.Abs("./1.txt")
	fmt.Println(path)
	fmt.Println()

	//返回路径最后一个元素
	fmt.Println("filepath.Base")
	fmt.Println(filepath.Base("./a/b/c"))
	fmt.Println(filepath.Base("\\a\\b\\c"))
	fmt.Println(filepath.Base(""))
	fmt.Println(filepath.Base("///"))
	fmt.Println()

	//返回等价的最短路径
	//1.用一个斜线替换多个斜线
	//2.清除当前路径.
	//3.清除内部的..和他前面的元素
	//4.以/..开头的,变成/

	fmt.Println("filepath.Clean")
	fmt.Println(filepath.Clean("./a/b/../"))
	fmt.Println(filepath.Clean("../a/../b/../"))
	fmt.Println(filepath.Clean("/a///b///c/"))
	fmt.Println()

	//返回最后一个目录分隔符之前的路径
	//路径为空则返回.
	//最后调用了clean输出
	fmt.Println("filepath.Dir")
	fmt.Println(filepath.Dir("./a/b/c"))
	fmt.Println(filepath.Dir(""))
	fmt.Println(filepath.Dir("../a///b//../c//d../"))
	fmt.Println()


	//返回链接文件的实际路径
	fmt.Println("filepath.EvalSymlink")
	path2, _ := filepath.EvalSymlinks("1.lnk")
	fmt.Println(path2)
	fmt.Println()

	//返回路径中的扩展名
	//如果没有点,返回空
	fmt.Println("filepath.Ext")
	fmt.Println(filepath.Ext("./a/b/c/d.jpg"))
	fmt.Println(filepath.Ext("/a/b.txt"))
	fmt.Println()

	//将路径中的/替换为路径分隔符
	fmt.Println("filepath.FromSlash")
	fmt.Println(filepath.FromSlash("./a/b/c"))
	fmt.Println(filepath.FromSlash("/a/../b/c//d"))
	fmt.Println()

	//返回所有匹配的文件
	fmt.Println("filepath.Glob")
	match, _ := filepath.Glob("./*.go")
	fmt.Println(match)
	fmt.Println()

	//判断路径是不是绝对路径
	fmt.Println("filepath.IsAbs")
	fmt.Println(filepath.IsAbs("./a/b/c"))
	fmt.Println(filepath.IsAbs("/a/b/c"))
	fmt.Println()

	//连接路径,返回已经clean过的路径
	//连接路径
	//返回已经clean过的路径
	fmt.Println("filepath.Join")
	fmt.Println(filepath.Join("./a", "/b/../c", "../d/c/f/g","/a"))
	fmt.Println(filepath.Join("./a", "b/c", "../d/"))
	fmt.Println(filepath.Join(""))
	fmt.Println()

	//匹配文件名,完全匹配则返回true
	fmt.Println("filepath.Match")
	fmt.Println(filepath.Match("*", "a"))
	fmt.Println(filepath.Match("/a/b/c/123.txt", "123.txt"))
	fmt.Println(filepath.Match("/a/b/c/123.txt", "/a/b/c/123.txt"))
	fmt.Println(filepath.Match("\\b", "b"))
	fmt.Println()

	//返回以basepath为基准的相对路径
	fmt.Println("filepath.Rel")
	path3, _ := filepath.Rel("C:/a/b", "C:/a/b/c/d/../e")
	fmt.Println(path3)
	fmt.Println()

	//将路径使用路径列表分隔符分开,见os.PathListSeparator
	//linux下默认为:,windows下为;
	fmt.Println("filepath.SplitList")
	fmt.Println(filepath.SplitList("C:/windows;C:/windows/system"))
	fmt.Println()

	//分割路径中的目录与文件
	fmt.Println("filepath.Split")
	dir, file := filepath.Split("C:/a/b/c/d.jpg")
	fmt.Println(dir, file)
	fmt.Println()

	//将路径分隔符使用/替换
	fmt.Println("filepath.ToSlash")
	fmt.Println(filepath.ToSlash("C:/a/b"))
	fmt.Println()

	//返回分区名
	fmt.Println("filepath.VolumeName")
	fmt.Println(filepath.VolumeName("C:/a/b/c"))
	fmt.Println()

	//遍历指定目录下所有文件
	fmt.Println("filepath.Walk")
	filepath.Walk("./", func(path string, info os.FileInfo, err error) error {
		fmt.Println(path)
		return nil
	})
}
关注
打赏
1663680270
查看更多评论
立即登录/注册

微信扫码登录

0.0858s