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语言程序设计有所帮助。