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

本文实例讲述了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语言程序设计有所帮助。

时间: 2024-07-31 06:24:46

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

android-WIFI扫描获取相关信息

问题描述 WIFI扫描获取相关信息 编写应用,扫描wifi,获取每一个wifi连接的信息. 需要获取每个ssid的以下信息: 1 支持的最大物理层速率 2 无线服务的类型(infrastructure 还是ad-hoc) 3 最早发现时间,最后发现时间 4 同时如何做到支持5.8G和2.4G全频段的信号强度扫描,在android上怎么编码设置和实现. 开发文档里面的scanResult 类似乎没有给出更多的信息.希望高手指点迷津. demo或者指引方向都是可以的.先谢谢各位. 解决方案 SqlC

WEB设计中的排版 如何便于用户高效、准确获取相关信息

首先谈一下"Metro"--由微软公司开发内部名称为" typography-based design language"(基于排版的设计语言). Metro是基于瑞士平面设计的设计原则(清晰,真实,美观),来源于交通指示牌.生活中人们行色匆匆,更需要提供快速,简洁,直接,明确的设计.现在的互联网又何尝不是如此,快捷获取信息的同时,信息泛滥.庞杂无序,简洁之风深入人心--减少元素,以显现本质.良好的排版有助于Web设计更加简洁有效. 概念: 排版就是将有限的视觉元素

php获取服务器操作系统相关信息的方法_php技巧

本文实例讲述了php获取服务器操作系统相关信息的方法.分享给大家供大家参考,具体如下: 下面是PHP获取当前服务器信息的基本语句. PHP程式版本: <?PHP echo PHP_VERSION; ?> ZEND版本: <?PHP echo zend_version(); ?> MYSQL支持: <?php echo function_exists (mysql_close)?"是":"否"; ?> MySQL数据库持续连接 :

python实现根据用户输入从电影网站获取影片信息的方法_python

本文实例讲述了python实现根据用户输入从电影网站获取影片信息的方法.分享给大家供大家参考.具体如下: 这段python代码主要演示了用户终端输入,正则表达式,网页抓取等 #!/usr/bin/env python27 #Importing the modules from BeautifulSoup import BeautifulSoup import sys import urllib2 import re import json #Ask for movie title title =

PHP版微信第三方实现一键登录及获取用户信息的方法_php技巧

本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法.分享给大家供大家参考,具体如下: 注意,要使用微信在第三方网页登录是需要"服务号"才可以哦,所以必须到官方申请. 一开始你需要进入微信公众平台开启开发模式,并且填写oauth2的回调地址,地址填写你项目的域名就可以了.比如:www.baidu.com或zhidao.baidu.com.如果你的项目在二级域名就写二级域名 前端url授权地址,在url中填写appid与你项目中方法中的oauth的地址,具体在下面的代码中可以

Android实现获取SERIAL信息的方法_Android

本文实例讲述了Android实现获取SERIAL信息的方法.分享给大家供大家参考.具体如下: android.os.build.serial 在API 9 中引入,如果低于9的系统可以通过这个方法获取这个信息值 java代码如下: public static String getDeviceSerial() { String serial = "unknown"; try { Class clazz = Class.forName("android.os.Build"

PHP获取服务器端信息的方法_php技巧

本文实例讲述了PHP获取服务器端信息的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /**  * 获取系统信息  *  * @return array  */ function getSystemInfo() {  $systemInfo = array();    // 系统  $systemInfo['os'] = PHP_OS;    // PHP版本  $systemInfo['phpversion'] = PHP_VERSION;    // Apache版本

Mysql中 show table status 获取表信息的方法_Mysql

使用方法 mysql>show table status; mysql>show table status like 'esf_seller_history'\G; mysql>show table status like 'esf_%'\G; 样例: mysql>show table status like 'esf_seller_history'\G; 1.Name 表名称 2.Engine: 表的存储引擎 3.Version: 版本 4.Row_format 行格式.对于My

Android实现获取SERIAL信息的方法

本文实例讲述了Android实现获取SERIAL信息的方法.分享给大家供大家参考.具体如下: android.os.build.serial 在API 9 中引入,如果低于9的系统可以通过这个方法获取这个信息值 java代码如下: public static String getDeviceSerial() { String serial = "unknown"; try { Class clazz = Class.forName("android.os.Build"