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
}))
}