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