Go语言扫描目录并获取相关信息的方法
本文实例讲述了Go语言扫描目录并获取相关信息的方法。分享给大家供大家参考。具体分析如下:
前言:最近看到Go里面有一个func很容易就可以扫描整个目录,并且可以得到相应的目录和文件信息,所以我将其进行了封装,拿到fileinfo的所有信息这样就可以方便的做其它用途了。
直接上代码,代码基于Goversion1
packagemain
import(
"path/filepath"
"os"
"flag"
"fmt"
"time"
)
const(
IsDirectory =iota
IsRegular
IsSymlink
)
typesysFilestruct{
fType int
fName string
fLink string
fSize int64
fMtime time.Time
fPerm os.FileMode
}
typeFstruct{
files[]*sysFile
}
func(self*F)visit(pathstring,fos.FileInfo,errerror)error{
if(f==nil){
returnerr
}
vartpint
iff.IsDir(){
tp=IsDirectory
}elseif( f.Mode()&os.ModeSymlink)>0{
tp=IsSymlink
}else{
tp=IsRegular
}
inoFile:=&sysFile{
fName:path,
fType:tp,
fPerm:f.Mode(),
fMtime:f.ModTime(),
fSize:f.Size(),
}
self.files=append(self.files,inoFile)
returnnil
}
funcmain(){
flag.Parse()
root:=flag.Arg(0)
self:=F{
files:make([]*sysFile,0),
}
err:=filepath.Walk(root,func(pathstring,fos.FileInfo,errerror)error{
returnself.visit(path,f,err)
})
iferr!=nil{
fmt.Printf("filepath.Walk()returned%v\n",err)
}
for_,v:=rangeself.files{
fmt.Println(v.fName,v.fSize)
}
}
希望本文所述对大家的Go语言程序设计有所帮助。