path包的使用
package main; import ( "fmt" "path" ) //go語言path包的學習 func main() { //返回路徑的最后一個元素 fmt.Println(path.Base("./a/b/c")); //如果路徑為空字符串,返回. fmt.Println(path.Base("")); //如果路徑只有斜線,返回/ fmt.Println(path.Base("///")); //返回等價的最短路徑 //1.用一個斜線替換多個斜線 //2.清除當前路徑. //3.清除內部的..和他前面的元素 //4.以/..開頭的,變成/ fmt.Println(path.Clean("./a/b/../")); //返回路徑最后一個元素的目錄 //路徑為空則返回. fmt.Println(path.Dir("./a/b/c")); //返回路徑中的擴展名 //如果沒有點,返回空 fmt.Println(path.Ext("./a/b/c/d.jpg")); //判斷路徑是不是絕對路徑 fmt.Println(path.IsAbs("./a/b/c")); fmt.Println(path.IsAbs("/a/b/c")); //連接路徑,返回已經clean過的路徑 fmt.Println(path.Join("./a", "b/c", "../d/")); //匹配文件名,完全匹配則返回true fmt.Println(path.Match("*", "a")); fmt.Println(path.Match("*", "a/b/c")); fmt.Println(path.Match("\\b", "b")); //分割路徑中的目錄與文件 fmt.Println(path.Split("./a/b/c/d.jpg")); }
filepath包的使用
package main; import ( "path/filepath" "fmt" "os" ) //學習filepath包,兼容各操作系統的文件路徑 func main() { //返回所給路徑的絕對路徑 path, _ := filepath.Abs("./1.txt"); fmt.Println(path); //返回路徑最后一個元素 fmt.Println(filepath.Base("./1.txt")); //如果路徑為空字符串,返回. fmt.Println(filepath.Base("")); //如果路徑只有斜線,返回/ fmt.Println(filepath.Base("///")); //返回等價的最短路徑 //1.用一個斜線替換多個斜線 //2.清除當前路徑. //3.清除內部的..和他前面的元素 //4.以/..開頭的,變成/ fmt.Println(filepath.Clean("C:/a/b/../c")); fmt.Println(filepath.Clean("./1.txt")); //返回路徑最后一個元素的目錄 //路徑為空則返回. fmt.Println(filepath.Dir("./a/b/c")); fmt.Println(filepath.Dir("C:/a/b/c")); //返回鏈接文件的實際路徑 path2, _ := filepath.EvalSymlinks("1.lnk"); fmt.Println(path2); //返回路徑中的擴展名 //如果沒有點,返回空 fmt.Println(filepath.Ext("./a/b/c/d.jpg")); //將路徑中的/替換為路徑分隔符 fmt.Println(filepath.FromSlash("./a/b/c")); //返回所有匹配的文件 match, _ := filepath.Glob("./*.go"); fmt.Println(match); //判斷路徑是不是絕對路徑 fmt.Println(filepath.IsAbs("./a/b/c")); fmt.Println(filepath.IsAbs("C:/a/b/c")); //連接路徑,返回已經clean過的路徑 fmt.Println(filepath.Join("C:/a", "/b", "/c")); //匹配文件名,完全匹配則返回true fmt.Println(filepath.Match("*", "a")); fmt.Println(filepath.Match("*", "C:/a/b/c")); fmt.Println(filepath.Match("\\b", "b")); //返回以basepath為基准的相對路徑 path3, _ := filepath.Rel("C:/a/b", "C:/a/b/c/d/../e"); fmt.Println(path3); //將路徑使用路徑列表分隔符分開,見os.PathListSeparator //linux下默認為:,windows下為; fmt.Println(filepath.SplitList("C:/windows;C:/windows/system")); //分割路徑中的目錄與文件 dir, file := filepath.Split("C:/a/b/c/d.jpg"); fmt.Println(dir, file); //將路徑分隔符使用/替換 fmt.Println(filepath.ToSlash("C:/a/b")); //返回分區名 fmt.Println(filepath.VolumeName("C:/a/b/c")); //遍歷指定目錄下所有文件 filepath.Walk("./", func(path string, info os.FileInfo, err error) error { fmt.Println(path); return nil; }); }