go語言學習-文件操做 path path/filepath

文件操做

在 Linux 中,路徑的格式爲/user/bin 路徑中的分隔符是/; Windos 中的路徑格式 爲C:\Windows路徑中的分隔符是\。 而**在Go中,只認'/' **。函數

path 路徑

1.func Base(path string) string 返回路徑的最後一部分。code

fmt.Println(path.Base("/usr/bin"))  //bin
fmt.Println(path.Base("")) //輸出.
fmt.Println(path.Base("C:\\Windows"))/*沒法識別Windows下的路徑分隔符, 將會把C:\\Windows作爲一個路徑 * /
fmt.Println(path.Base(strings.Replace("C:\\Windows", "\\", "/", -1))) /*把\轉換成/*/

2.func Clean(path string) string 返回一個跟 path 等價的短路徑。通常在路徑中出現./或../時 能夠使用本函數,返回一個等價的路徑string

fmt.Println(path.Clean("/a/b/../c")) /*/a/c*/
fmt.Println(path.Clean("/a/b/../././c")) /*/a/c*/

3.func Dir(path string) string 返回路徑中的目錄部分。也就是最後一個/前面的部分。it

fmt.Println(path.Dir("/a/b/../c/d/e")) /*/a/c/d*/
fmt.Println(path.Dir("/a/b/"))       /*/a/b*/

4.func Ext(path string) string 用來取文件的擴展名。test

fmt.Println(path.Ext("/a/b/../c/d./e")) /*沒有擴展名*/
fmt.Println(path.Ext("/a/b/test.txt"))  /*.txt*/

5.func IsAbs(path string) bool 用來判斷路徑是否絕對路徑。在 Linux 下若是路徑是以/開頭 的是絕對路徑,如/user/bin,不然是相對路徑;Windows 下,以盤符開頭的是絕對路徑,如 C:\Windows\system,而 Windows\system 是相對路徑import

fmt.Println(path.IsAbs("/a/b/c"))
fmt.Println(path.IsAbs(strings.Replace("C:\\Windows\\system", "\\", "/", -1))) /*Go 只識別/因此須要轉換一下*/

第一個輸出 true,/a/b/c 是絕對路徑;第二個輸出 false.
C:\Windows\system 是絕對路徑,但 Go 好像只支持 Linux 格式的路徑,因此此處判斷錯誤

6.func Join(elem ...string) string,用來進行路徑的鏈接。如將 a/b,和 c 鏈接成 a/b/c。擴展

fmt.Println(path.Join("a/b", "c"))/*a/b/c*/
fmt.Println(path.Join("C:\\Windows", "System"))/*C:\Windows/System*/

7.func Split(path string) (dir, file string)把路徑分割成目錄和文件兩部分。file

fmt.Println(path.Split("/a/b/test.txt")) /*/a/b/ test.txt*/
fmt.Println(path.Split("/a/b/c/"))       /*/a/b/c/ */
fmt.Println(path.Split("/a/b/c"))       /*/a/b/   c */

filepath

1.func Abs(path string) (string, error)用來把相對路徑轉換成絕對路徑,該函數位於 path/filepath 包中遍歷

fmt.Println(filepath.Abs(".")) /*當前文件所在目錄*/

2.func Walk(root string, walkFn WalkFunc) error,用來遍歷 root 目錄下的全部文件和子目錄。im

//WalkFunc 是一個函數類型,定爲 type WalkFunc func(path string, info os.FileInfo, err error) error,path 爲當前文件或文件俠的完整路徑,info 是 os.FileInfo 結構的表示


package main

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

func DispFile(path string, info os.FileInfo, err error) error {
	fmt.Println(path, "-------", info.Name(), "------", info.IsDir())
	return nil
}
func main() {
	filepath.Walk(".", DispFile)
}
相關文章
相關標籤/搜索