十四、目錄操作

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