Go语言扫描目录并获取相关信息的方法

发布时间:2022-04-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Go语言扫描目录并获取相关信息的方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了Go语言扫描目录并获取相关信息的方法。分享给大家供大家参考。具体分析如下:

前言:最近看到Go里面有一个func很容易就可以扫描整个目录,并且可以得到相应的目录和文件信息,所以我将其进行了封装,拿到file info的所有信息 这样就可以方便的做其它用途了。

直接上代码,代码基于Go version 1

复制代码 代码如下:
package main
import (
    "path/filepath"
    "os"
    "flag"
    "fmt"
    "time"
)
const (
    IsDirectory             = iota
    IsRegular
    IsSyMLink
)
tyPE SysFile struct { 
    fType       int
    fName       string
    fLink       string
    fSize       int64
    fMtime      time.Time
    fPerm       os.FileMode
}
type F struct {
    files []*sysFile
}
func (self *F) visIT(path string, f os.Fileinfo, err error) error {
    if ( f == nil ) {
        return err
    }
    VAR tp int
    if f.IsDir() {
        tp = IsDirectory
    }else if (  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 )
    return nil
}
func main() {
    flag.Parse()
    root := flag.arg(0)
    self := F{
        files: make( []*sysFile, 0 ),
    }
    err := filepath.Walk(root, func(path string, f os.FileInfo, err error) error {
        return self.visit(path, f, err)
    })
    if err != nil { 
      fmt.PRintf("filepath.Walk() returned %v\n", err)
    }
    for _, v := range self.files {
        fmt.Println( v.fName,v.fSize )
    }
}

希望本文所述对大家的Go语言程序设计有所帮助。

脚本宝典总结

以上是脚本宝典为你收集整理的Go语言扫描目录并获取相关信息的方法全部内容,希望文章能够帮你解决Go语言扫描目录并获取相关信息的方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。