十四、目录操作

1.创建&删除&重命名

package main

import "os"

func main() {
   //创建目录
   //这里有个返回值 如果文件夹存在 会返回一个报错
   os.Mkdir("test01",0644)
   //重命名
   os.Rename("test01","test02")
   //删除
   os.Remove("test02")

   //如果目录有子目录 创建
   os.MkdirAll("test/a",0644)
   //如果目录有子目录remove 会无法删除 需要用removeall
   os.RemoveAll("test")

}


package main

import "os"

func main() {
   //重命名
   os.Rename("bbb.txt","user.txt")
   //删除
   os.Remove("user.txt")
}

2.遍历目录中的文件

package main

import (
   "flag"
   "fmt"
   "os"
)

func main() {
   //获取文件夹的子文件信息
   path := flag.String("p","","aa")
   flag.Parse()
   //for _,path := range []string{"users"} {
      fileinfo,err := os.Stat(*path)
      if err != nil {
         if os.IsNotExist(err){
            fmt.Println("目录不存在")
         }
      }else {
         if fileinfo.IsDir() {
            dirfile , err := os.Open(*path)
            if err == nil {
               defer dirfile.Close()
               //-1表示所有 正整数表示获取前几个
               //readdir获取的是所有信息
               childrens,_ := dirfile.Readdir(-1)
               //返回来的是一个fileinfo切片 遍历获取
               for _,children := range childrens{
                  fmt.Println(children.Name(),children.IsDir(),children.Size(),children.ModTime())
               }
               //通过这种方法就可以递归copy 是目录就遍历读取 然后写入另一个目录 可以实现递归copy
               //readdirnames 获取的是所有name
               //childrens ,_ := dirfile.Readdirnames(-1)
               //for _,children := range childrens{
               // fmt.Println(children)
               //}
            }
         }

      }

   //}
}

3.获取当前目录&缓存目录&配置文件目录

package main

import (
   "fmt"
   "os"
)

func main() {
   fmt.Println(os.UserCacheDir())
   fmt.Println(os.UserHomeDir())
   fmt.Println(os.UserConfigDir())
   fmt.Println(os.TempDir())
   //获取当前所在目录
   a,err := os.Getwd()
   if err == nil {
      fmt.Println(a)
   }else {
      fmt.Println(err)
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章