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环境中试验。成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。