源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-06-18 08:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Go语言扫描目录并获取相关信息的方法
本文实例讲述了Go语言扫描目录并获取相关信息的方法。分享给大家供大家参考。具体分析如下: 前言:最近看到Go里面有一个func很容易就可以扫描整个目录,并且可以得到相应的目录和文件信息,所以我将其进行了封装,拿到file info的所有信息 这样就可以方便的做其它用途了。 直接上代码,代码基于Go version 1
[u]复制代码[/u] 代码如下:
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语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部