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

2022-10-13,,,,,,

这篇文章主要介绍了Go语言扫描目录获取相关信息方法,实例分析了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语言正则表达式示例
  • Go语言编程中判断文件是否存在是创建目录的方法
  • GO语言实现简单的目录复制功能
  • GO语言实现列出目录和遍历目录的方法
  • Go语言的GOPATH与工作目录详解
  • GO语言文件的创建与打开实例分析
  • go语言遍历文件夹示例
  • Go语言文件操作的方法
  • go语言文件正则表达式搜索功能示例

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

下载本文的Word格式文档,以方便收藏与打印。