十六、工具方法(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
   }))

}
发布了112 篇原创文章 · 获赞 12 · 访问量 6678

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/104963062