十六、工具方法(io/ioutil&path/filepath)

1.io/ioutil

ioutil 包主要提供對流的實用操作功能
a) 常用函數
⚫ ReadAll:讀取流中所有內容
⚫ ReadDir:讀取目錄中文件信息
⚫ ReadFile:讀取文件
⚫ TempDir:創建臨時目錄
⚫ TempFile:創建臨時文件
⚫ WriteFile:寫入文件

package main

import (
   "fmt"
   "io/ioutil"
   "os"
)

func main() {
   path := "user3.txt"
   file,err := os.Open(path)
   if err != nil {
      fmt.Println(err)
   }else {
      bytes,err := ioutil.ReadAll(file)
      fmt.Println(string(bytes),err)
      file.Close()
   }
}
package main

import (
   "fmt"
   "io/ioutil"
)

func main() {
   bytes,err := ioutil.ReadFile("user3.txt")
   if err != nil{
      fmt.Println(err)
   }else {
      fmt.Println(string(bytes))
   }
}
package main

import (
   "fmt"
   "io/ioutil"
   "os"
)

func main() {
   err := ioutil.WriteFile("user3.txt",[]byte("aaaaa"),os.ModePerm)
   fmt.Println(err)
}

2.path/filepath

filepath 包提供對文件路徑的操作,兼容不同操作系統
a) 常用函數
⚫ Abs:絕對路徑
⚫ Base:文件名
⚫ Clean:清除文件路徑中.、…等字符
⚫ Dir:文件文件目錄
⚫ Ext:獲取文件後綴
⚫ FromSlash:格式化路徑分割符()
⚫ ToSlash:格式化路徑分割符(/)
⚫ Glob:獲取匹配格式的文件路徑切片
⚫ IsAbs:判斷是否爲絕對路徑
⚫ Json:連接路徑
⚫ Match:判斷路徑是否匹配格式
⚫ Split:分割文件目錄和文件名
⚫ SplitList:分割路徑分割符(冒號或分號)連接的文件路徑
⚫ Walk:遍歷目錄中文件(子孫)

package main

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

func main() {
   //abs 把相對路徑 換爲絕對路徑
   fmt.Println(filepath.Abs("."))
   ////os.Args 返回一個程序運行的相對路徑
   fmt.Println(filepath.Abs(os.Args[0]))
   ////把絕對路徑轉換爲相對路徑 如果最後是一個文件打印文件名 是目錄打印目錄名
   fmt.Println(filepath.Base("c:/xxx"))
   fmt.Println(filepath.Base("c:/xxx/xxx.txt"))
   ////獲取父目錄
   fmt.Println(filepath.Dir("c:/xxx/aaa"))
   fmt.Println(filepath.Dir("c:/xxx/xxx.txt"))
   ////打印文件後綴  目錄或者沒有後綴的返回一個空
   fmt.Println(filepath.Ext("c:/xxx/aaa"))
   fmt.Println(filepath.Ext("c:/xxx/xxx.txt"))
   ////路徑拼接  前面是目錄最後是文件 支持多個字符串拼接
   fmt.Println(filepath.Join("aaa","bbb","a.txt"))
   ////查找 可以使用部分正則
   fmt.Println(filepath.Glob("./[file]*.go"))
   //遍歷目錄下所有文件
   fmt.Println(filepath.Walk("test", func(path string, info os.FileInfo, err error) error {
      fmt.Printf("%T",path)
      fmt.Println(filepath.Base(path))
      fmt.Println(info.IsDir())
      fmt.Println(err)
      return nil
   }))

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章