1. 程式人生 > 程式設計 >Golang獲取目錄下的檔案及目錄資訊操作

Golang獲取目錄下的檔案及目錄資訊操作

一、獲取當前目錄下的檔案或目錄資訊(不包含多級子目錄)

func main() {
 pwd,_ := os.Getwd()
 //獲取檔案或目錄相關資訊
 fileInfoList,err := ioutil.ReadDir(pwd)
 if err != nil {
 log.Fatal(err)
 }
 fmt.Println(len(fileInfoList))
 for i := range fileInfoList {
 fmt.Println(fileInfoList[i].Name()) //列印當前檔案或目錄下的檔案或目錄名
 }
}

二、獲取當前目錄下的檔案或目錄名(不包含多級子目錄)

package main 
import (
 "os"
 "io/ioutil"
 "log"
 "fmt"
 "path/filepath"
)
 
func main() {
 pwd,_ := os.Getwd()
 
 //獲取當前目錄下的檔案或目錄名(包含路徑)
 filepathNames,err := filepath.Glob(filepath.Join(pwd,"*"))
 if err != nil {
 log.Fatal(err)
 }
 
 for i := range filepathNames {
 fmt.Println(filepathNames[i]) //列印path
 } 
}

三、獲取當前檔案或目錄下的所有檔案或目錄資訊(包括子目錄)

package main 
import (
 "os"
 "io/ioutil"
 "log"
 "fmt"
 "path/filepath"
)
 
func main() {
 pwd,_ := os.Getwd() 
 
 //獲取當前目錄下的所有檔案或目錄資訊
 filepath.Walk(pwd,func(path string,info os.FileInfo,err error) error{
 fmt.Println(path) //列印path資訊
 fmt.Println(info.Name()) //列印檔案或目錄名
 return nil
 })
}

補充:Golang ioutil.ReadDir 讀取目錄下的內容

ioutil中提供了一個非常翻遍的函式函式ReadDir,他讀取目錄並返回排好序的檔案以及子目錄名([]os.FileInfo)

example:編寫程式輸出某目錄下的所有檔案。

package main
import (
  "io/ioutil"
  "fmt"
  "os"
)
func listAll(path string,curHier int) {
  readerInfos,err := ioutil.ReadDir(path)
  if err != nil {
    fmt.Println(err)
    return
  }
  for _,info := range readerInfos {
    if info.IsDir() {
      for tmpheir := curHier; tmpheir >0; tmpheir-- {
        fmt.Printf("|\t")
      }
      fmt.Println(info.Name(),"\\")
      listAll(path + "\\" + info.Name(),curHier+1)
    }else {
      for tmpheir := curHier ;tmpheir >0; tmpheir-- {
        fmt.Printf("|\t")
      }
      fmt.Println(info.Name())
    }
  }
}
func main() {
  dir := os.Args[1]
  listAll(dir,0)
}

我是在win10 環境中試驗。成功

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。