Golang获取目录下的文件及目录信息操作
一、获取当前目录下的文件或目录信息(不包含多级子目录)
funcmain(){
pwd,_:=os.Getwd()
//获取文件或目录相关信息
fileInfoList,err:=ioutil.ReadDir(pwd)
iferr!=nil{
log.Fatal(err)
}
fmt.Println(len(fileInfoList))
fori:=rangefileInfoList{
fmt.Println(fileInfoList[i].Name())//打印当前文件或目录下的文件或目录名
}
}
二、获取当前目录下的文件或目录名(不包含多级子目录)
packagemain
import(
"os"
"io/ioutil"
"log"
"fmt"
"path/filepath"
)
funcmain(){
pwd,_:=os.Getwd()
//获取当前目录下的文件或目录名(包含路径)
filepathNames,err:=filepath.Glob(filepath.Join(pwd,"*"))
iferr!=nil{
log.Fatal(err)
}
fori:=rangefilepathNames{
fmt.Println(filepathNames[i])//打印path
}
}
三、获取当前文件或目录下的所有文件或目录信息(包括子目录)
packagemain
import(
"os"
"io/ioutil"
"log"
"fmt"
"path/filepath"
)
funcmain(){
pwd,_:=os.Getwd()
//获取当前目录下的所有文件或目录信息
filepath.Walk(pwd,func(pathstring,infoos.FileInfo,errerror)error{
fmt.Println(path)//打印path信息
fmt.Println(info.Name())//打印文件或目录名
returnnil
})
}
补充:Golangioutil.ReadDir读取目录下的内容
ioutil中提供了一个非常翻遍的函数函数ReadDir,他读取目录并返回排好序的文件以及子目录名([]os.FileInfo)
example:编写程序输出某目录下的所有文件。
packagemain
import(
"io/ioutil"
"fmt"
"os"
)
funclistAll(pathstring,curHierint){
readerInfos,err:=ioutil.ReadDir(path)
iferr!=nil{
fmt.Println(err)
return
}
for_,info:=rangereaderInfos{
ifinfo.IsDir(){
fortmpheir:=curHier;tmpheir>0;tmpheir--{
fmt.Printf("|\t")
}
fmt.Println(info.Name(),"\\")
listAll(path+"\\"+info.Name(),curHier+1)
}else{
fortmpheir:=curHier;tmpheir>0;tmpheir--{
fmt.Printf("|\t")
}
fmt.Println(info.Name())
}
}
}
funcmain(){
dir:=os.Args[1]
listAll(dir,0)
}
我是在win10环境中试验。成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。