婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang中的path/filepath包用法

Golang中的path/filepath包用法

熱門標簽:宿遷便宜外呼系統代理商 仙桃400電話辦理 不封卡外呼系統 寧波語音外呼系統公司 湛江crm外呼系統排名 地圖標注免費定制店 鄭州智能語音電銷機器人價格 上海極信防封電銷卡價格 重慶慶云企業400電話到哪申請

path/filepath包下的相關函數

1. ToSlash函數

func ToSlash(path string) string

功能:將path中平臺相關的路徑分隔符轉換成'/'

例如:windows當前路徑: D:\gopro\src\study,轉換之后D:/gopro/src/study

2. FromSlash函數

func FromSlash(path string) string

功能:將 path 中的 '/' 轉換為系統相關的路徑分隔符

3.Dir函數

func Dir(path string) string

功能:獲取path中最后一個分隔符之前的部分(不包含分隔符)

4.Base函數

func Base(path string) string

功能:獲取path中最后一個分隔符之后的部分(不包含分隔符)

5.Split函數

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

功能:獲取path中最后一個分隔符前后的兩部分,

dir是分隔符前面的部分包含分隔符,file是分隔符后面的部分不包含分隔符

6. Ext函數

func Ext(path string) string

功能:獲取路徑字符串中的文件擴展名

例如:

fmt.Println(“D:/gopro/src/aaa.txt”)

//如果該文件存在則會輸出: .txt

7.Rel函數

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

功能:

獲取targpath相對于basepath的路徑

要求targpaht和basepath必須"都是相對路徑"或都是"絕對路徑"

例如:

package main 
import (
  "fmt"
  "path/filepath"
) 
 
func main() {
 
  // 都是絕對路徑
  s, err := filepath.Rel(`/a/b/c`, `/a/b/c/d/e`)
  fmt.Println(s, err) // d/e nil>
 
  // 都是相對路徑
  s, err = filepath.Rel(`a/b/c`, `a/b/c/d/e`)
  fmt.Println(s, err) // d/e nil>
 
  // 一個絕對一個相對
  s, err = filepath.Rel(`/a/b/c`, `a/b/c/d/e`)
  fmt.Println(s, err)
  // Rel: can't make a/b/c/d/e relative to /a/b/c
 
  // 一個相對一個絕對
  s, err = filepath.Rel(`a/b/c`, `/a/b/c/d/e`)
  fmt.Println(s, err)
  // Rel: can't make /a/b/c/d/e relative to a/b/c
 
  // 從 `a/b/c` 進入 `a/b/d/e`,只需要進入 `../d/e` 即可
  s, err = filepath.Rel(`a/b/c`, `a/b/d/e`)
  fmt.Println(s, err) // ../d/e nil>
}

8.Join函數

func Join(elem ...string) string

功能:將elem中的多個元素合并成一個路徑,忽略空元素,清理多余字符

9.Clean函數

func Clean(path string) string

功能:

清除path中多余的字符

規則如下:

1.如果有多個分隔符,則只留一個

2.消除每一個.(當前路徑)路徑名

3.消除每一個..(父目錄)路徑名,以及它之前的非..元素

2和3使用于linux系統

10. IsAbs函數

func IsAbs(path string) (b bool)

功能:判斷該路徑是否是絕對路徑

11. Abs函數

func Abs(path string) (string, error)

功能:獲取path的絕對路徑

示例:

fmt.Println(filepath.Abs("b/c")) //返回結果:D:\gopro\src\study\b\c nil>

12. SplitList函數

func SplitList(path string) []string

功能:按os.PathListSeparator即(;)將路徑進行分割

13. VolumeName函數

func VolumeName(path string) string

功能:

返回路徑字符串中的卷名

如Windows 中的 `C:\Windows` 會返回 "C:"

14. EvalSymlinks函數

func EvalSymlinks(path string) (string, error)

功能:返回鏈接(快捷方式)所指向的實際文件

15.Match函數

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

功能:

根據pattern來判斷name是否匹配,如果匹配則返回true

pattern 規則如下:

可以使用 ? 匹配單個任意字符(不匹配路徑分隔符)。

可以使用 * 匹配 0 個或多個任意字符(不匹配路徑分隔符)。

可以使用 [] 匹配范圍內的任意一個字符(可以包含路徑分隔符)。

可以使用 [^] 匹配范圍外的任意一個字符(無需包含路徑分隔符)。

[] 之內可以使用 - 表示一個區間,比如 [a-z] 表示 a-z 之間的任意一個字符。

反斜線用來匹配實際的字符,比如 \* 匹配 *,\[ 匹配 [,\a 匹配 a 等等。

[] 之內可以直接使用 [ * ?,但不能直接使用 ] -,需要用 \]、\- 進行轉義。

16.Glob函數

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

功能:列出與指定的模式 pattern 完全匹配的文件或目錄(匹配原則同上)

示例:

package main 
import (
 "os"
 "fmt"
 "path/filepath"
) 
 
func main() {
  pwd,_ := os.Getwd()
  fmt.Println(filepath.Glob(pwd+"/???"))
}

以上示例是列出當前文件夾下 名字為3個字符的文件或目錄

17.Walk函數

func Walk(root string, walkFn WalkFunc) error

功能:遍歷指定目錄(包括子目錄),對遍歷的項目用walkFn函數進行處理

walkFn函數如下:

type WalkFunc func(path string, info os.FileInfo, err error) error

path為當前文件或目錄的路徑,info為文件描述信息

規則如下:

文件處理函數定義如下,如果 WalkFunc 返回 nil,則 Walk 函數繼續遍歷,如果返回 SkipDir,則 Walk 函數會跳過當前目錄(如果當前遍歷到的是文件,則同時跳過后續文件及子目錄),繼續遍歷下一個目錄。如果返回其它錯誤,則 Walk 函數會中止遍歷。在 Walk 遍歷過程中,如果遇到錯誤,則會將錯誤通過 err 傳遞給WalkFunc 函數,同時 Walk 會跳過出錯的項目,繼續處理后續項目。

示例:

package main 
import (
  "os"
  "fmt"
  "path/filepath" 
)
 
func main() {
  pwd,_ := os.Getwd()
  filepath.Walk(pwd,func(fpath string, info os.FileInfo, err error) error {
    if match,err := filepath.Match("???",filepath.Base(fpath)); match {
      fmt.Println("path:",fpath)
      fmt.Println("info:",info)
      return err
    }
    return nil
  })
}

以上示例是遍歷當前文件夾下名字為3個字符的文件或目錄及info信息,及滿足條件目錄下的子文件或子目錄。

path目錄下的相關函數

1. Join函數

func Join(elem ...string) string

功能:將多個path進行連接

2. Match函數

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

功能:根據pattern進行匹配

3. IsAbs函數

func IsAbs(path string) bool

功能:是否是絕對路徑,判斷是否是以'/'結尾,不適用windows

4.Clean函數

func Clean(path string) string

功能:清除path中多余的字符

5.Ext函數

func Ext(path string) string

功能:獲取文件后綴名

6.Split函數

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

功能:獲取path中最后一個分隔符前后的兩部分,分隔符前面的部分包含分隔符,后面的不包含分割符

7. Base函數

func Base(path string) string

功能:獲取path中最后一個分隔符之后的部分(不包含分隔符)

8.Dir函數

func Dir(path string) string

功能:獲取path的目錄,最后一個分隔符前面的內容

補充:golang中io/ioutil.readdir和path/filepath.walk遍歷獲取目錄下文件性能比較

在使用golang進行開發,獲取當前目錄下文件或文件列表時候有兩種庫方法可以供使用。但是那種性能好,在網上沒有找到詳細的描述,因此自己寫了兩個函數,進行了下比較。最終發現ioutil的效率要高很高。

具體執行效果,獲取一個D盤目錄下總共340個文件,比較兩個函數耗時明顯發現 ioutil的效率要高很多:

下面就貼出源代碼,大家在這塊有更高效的處理,歡迎討論:

package main 
import (
 "fmt"
 "io/ioutil"
 "os"
 "path/filepath"
 "time"
) 
 
func GetAllFile(pathname string, s []string) ([]string, error) {
 fromSlash := filepath.FromSlash(pathname)
 //fmt.Println(fromSlash)
 rd, err := ioutil.ReadDir(fromSlash)
 if err != nil {
 //log.LOGGER("Error").Error("read dir fail %v\n", err)
 fmt.Println("read dir fail:", err)
 return s, err
 }
 for _, fi := range rd {
 if fi.IsDir() {
 fullDir:= filepath.Join(fromSlash,fi.Name())
 s, err = GetAllFile(fullDir, s)
 if err != nil {
 fmt.Println("read dir fail:", err)
 //log.LOGGER("Error").Error("read dir fail: %v\n", err)
 return s, err
 }
 } else {
 fullName:= filepath.Join(fromSlash,fi.Name())
 s = append(s, fullName)
 }
 }
 return s, nil
}
 
func GetALLFIles_walk(pathname string)([]string){
 StartTime :=time.Now();
 dst_target :=[]string{}
 err := filepath.Walk(pathname, func(src string, f os.FileInfo, err error) error {
 if f == nil {
 return err
 }
 if f.IsDir(){
 return nil
 }else { //進行文件的復制
 dst_target=append(dst_target,src)
 
 //return s
 }
 //println(path)
 return nil
 })
 
 if err != nil {
 fmt.Printf("filepath.Walk() returned %v\n", err)
 return nil
 //log.LOGGER("Error").Error("filepath.Walk() returned %v\n", err)
 }
 fmt.Println("Cost Time:",time.Since(StartTime))
 return dst_target
}
 
func main(){ 
 s:=[]string{}
 n:=[]string{}
 pathname:="D://go_copysrc"
 
 fmt.Printf("filepath walk cost time returned \n")
 n = GetALLFIles_walk(pathname)
 fmt.Println("the number of file is %v,content is:%v",len(n),n)
 
 fmt.Printf("io util cost time returned \n")
 StartTime :=time.Now();
 s,_=GetAllFile(pathname,s)
 fmt.Println("Cost Time:",time.Since(StartTime))
 fmt.Println("the number of file is %v,content is:%v",len(s),s) 
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang 64位linux環境下編譯出32位程序操作
  • golang-redis之sorted set類型操作詳解
  • golang 字符串切片去重實例
  • golang 解析word文檔操作
  • golang逐行讀取文件的操作
  • 以alpine作為基礎鏡像構建Golang可執行程序操作
  • golang 如何獲取pem格式RSA公私鑰長度

標簽:電子產品 物業服務 西雙版納 儋州 海南 遼寧 安康 青海

巨人網絡通訊聲明:本文標題《Golang中的path/filepath包用法》,本文關鍵詞  Golang,中的,path,filepath,包用法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang中的path/filepath包用法》相關的同類信息!
  • 本頁收集關于Golang中的path/filepath包用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩福利视频网| 欧美日韩国产电影| 国产精品一二二区| 日本丰满少妇一区二区三区| 日韩片之四级片| 亚洲欧洲av一区二区三区久久| 欧美日韩在线不卡| 精品久久久久久综合日本欧美| 国产欧美精品日韩区二区麻豆天美| 亚洲国产精品综合小说图片区| av成人老司机| 一级女性全黄久久生活片免费| 国产河南妇女毛片精品久久久 | 欧美日韩免费不卡视频一区二区三区| 亚洲欧美综合另类在线卡通| 国产欧美一区二区精品仙草咪| 国产精品久久三区| 亚洲欧美一区二区不卡| 久久久久99精品一区| 依依成人精品视频| 成人av网站大全| 欧美一区二区三区视频在线观看| 亚洲视频在线一区二区| 久久99精品久久久久婷婷| 欧美揉bbbbb揉bbbbb| 久久欧美一区二区| 日韩av在线发布| 欧美日韩一区二区三区高清| 中文字幕二三区不卡| 国产视频一区在线播放| 国产精品毛片久久久久久| 美女脱光内衣内裤视频久久网站| 色狠狠色狠狠综合| 一区二区免费在线| 欧美日韩成人综合天天影院| 婷婷久久综合九色综合伊人色| 欧美浪妇xxxx高跟鞋交| 韩国v欧美v亚洲v日本v| 久久精子c满五个校花| 成人天堂资源www在线| 国产精品久久三| 色噜噜狠狠成人中文综合| 亚洲午夜精品17c| 91精品国产综合久久婷婷香蕉| 国产主播一区二区| 欧美国产日本视频| 欧美性猛片aaaaaaa做受| 日本亚洲三级在线| 国产目拍亚洲精品99久久精品| 床上的激情91.| 午夜伦欧美伦电影理论片| 久久先锋影音av鲁色资源| 91麻豆国产精品久久| 九色综合狠狠综合久久| 亚洲bdsm女犯bdsm网站| 国产精品久久久久精k8| 欧美一区二区三区在线电影| 国产米奇在线777精品观看| 亚洲高清一区二区三区| 亚洲少妇最新在线视频| 久久先锋影音av鲁色资源| 7777精品伊人久久久大香线蕉超级流畅 | 国产成人自拍网| 成人av资源在线| 91黄色在线观看| 色综合 综合色| 色www精品视频在线观看| 日本韩国欧美一区二区三区| 欧美日韩国产首页| 亚洲h动漫在线| 欧美午夜在线观看| 日本一区二区三区免费乱视频| 欧美日韩国产片| 日韩欧美国产电影| 中文字幕在线不卡视频| 精品久久久久久久人人人人传媒 | 天堂av在线一区| 欧美无人高清视频在线观看| 欧美午夜片在线看| 亚洲高清免费视频| 日本精品一级二级| 欧美极品少妇xxxxⅹ高跟鞋 | 久久久久久影视| 蜜乳av一区二区三区| 精品美女被调教视频大全网站| 性做久久久久久久久| 国产毛片精品国产一区二区三区| 欧美视频日韩视频| 亚洲小说欧美激情另类| 91黄色在线观看| 亚洲精品视频免费观看| 在线精品亚洲一区二区不卡| 亚洲男人的天堂网| 国产乱人伦精品一区二区在线观看 | 亚洲女人小视频在线观看| av电影天堂一区二区在线| 国产精品久久久久天堂| 欧美色图第一页| 免费久久99精品国产| 国产精品久久久久一区二区三区| 成人高清视频在线| 另类综合日韩欧美亚洲| 欧美一级二级三级蜜桃| 一区二区三区中文字幕精品精品| 日韩欧美二区三区| 国产风韵犹存在线视精品| 视频在线在亚洲| 精品久久人人做人人爰| 日本国产一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 色视频成人在线观看免| 国产精品欧美久久久久一区二区| 欧美日韩一区二区三区四区| 日本成人超碰在线观看| 亚洲欧洲精品成人久久奇米网| 91色乱码一区二区三区| 国产日产欧美一区二区三区| 欧洲av在线精品| 蜜桃91丨九色丨蝌蚪91桃色| 一级精品视频在线观看宜春院| 欧美高清视频一二三区 | 在线播放日韩导航| 国产盗摄视频一区二区三区| 亚洲一二三级电影| 久久久噜噜噜久噜久久综合| 欧美日韩一区二区三区免费看| 国产一区二区视频在线| 亚洲一级二级三级| 亚洲激情成人在线| 免费在线观看视频一区| 久久丁香综合五月国产三级网站| 色婷婷狠狠综合| 成人免费毛片aaaaa**| 欧美日韩国产一级| 午夜精品视频在线观看| 久久精品亚洲精品国产欧美kt∨ | 亚洲国产精品久久人人爱 | 成人app软件下载大全免费| 亚洲另类色综合网站| 国产日韩精品一区二区浪潮av| 欧美三级日韩三级| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美韩国日本综合| 欧美xxxxx牲另类人与| 欧美精品一区二区三区蜜桃| 亚洲小说欧美激情另类| 国产乱人伦偷精品视频免下载| 91麻豆精东视频| 亚洲愉拍自拍另类高清精品| 亚洲国产视频网站| 日韩中文字幕亚洲一区二区va在线| 免费日韩伦理电影| 国产盗摄一区二区| 99re成人在线| 激情成人综合网| 91麻豆精品视频| 色狠狠色噜噜噜综合网| 欧美老肥妇做.爰bbww| 欧美日韩精品一区视频| 久久av中文字幕片| 91超碰这里只有精品国产| 国产伦精品一区二区三区免费迷| 一区二区三区鲁丝不卡| 欧美一级生活片| 色婷婷av一区二区三区软件 | 欧美日韩国产综合一区二区| jlzzjlzz国产精品久久| 99精品视频在线观看| 91精品国产色综合久久ai换脸 | 日本不卡一二三区黄网| 成人av午夜电影| 日韩一级片在线观看| 中文字幕在线观看不卡| 久99久精品视频免费观看| 成人激情小说乱人伦| 日韩亚洲欧美高清| 久久 天天综合| 亚洲欧美日本韩国| 成人av电影免费在线播放| 日韩网站在线看片你懂的| 亚洲乱码一区二区三区在线观看| 国产精品夜夜嗨| 久久九九久精品国产免费直播| 一区二区三区自拍| 亚洲一区二区三区国产| 免费观看成人鲁鲁鲁鲁鲁视频| 成人久久18免费网站麻豆| 国产精品99久久久久久宅男| av电影在线观看不卡| 欧美一区二区三区男人的天堂| xvideos.蜜桃一区二区| 欧美日韩大陆在线| 一区二区三区精密机械公司| 99久久综合国产精品| 91精品国产欧美一区二区18| 91麻豆国产福利精品| 中文字幕av免费专区久久| 色婷婷久久99综合精品jk白丝 | 国产欧美一区二区精品久导航| 亚洲高清视频中文字幕|