在使用golang进行开发,获取当前目录下文件或文件列表时候有两种库方法可以供使用。但是那种性能好,在网上没有找到详细的描述,因此自己写了两个函数,进行了下比较。最终发现ioutil的效率要高很高。

具体执行效果,获取一个D盘目录下总共340个文件,比较两个函数耗时明显发现 ioutil的效率要高很多:

下面就贴出源代码,大家在这块有更高效的处理,欢迎讨论:


package mainimport ("fmt""io/ioutil""os""path/filepath""time"
)func GetAllFile(pathname string, s []string) ([]string, error) {fromSlash := filepath.FromSlash(pathname)//fmt.Println(fromSlash)rd, err := ioutil.ReadDir(fromSlash)if err != nil {//log.LOGGER("Error").Error("read dir fail %v\n", err)fmt.Println("read dir fail:", err)return s, err}for _, fi := range rd {if fi.IsDir() {fullDir:= filepath.Join(fromSlash,fi.Name())s, err = GetAllFile(fullDir, s)if err != nil {fmt.Println("read dir fail:", err)//log.LOGGER("Error").Error("read dir fail: %v\n", err)return s, err}} else {fullName:= filepath.Join(fromSlash,fi.Name())s = append(s, fullName)}}return s, nil
}func GetALLFIles_walk(pathname string)([]string){StartTime :=time.Now();dst_target :=[]string{}err := filepath.Walk(pathname, func(src string, f os.FileInfo, err error) error {if f == nil {return err}if f.IsDir(){return nil}else { //进行文件的复制dst_target=append(dst_target,src)//return s}//println(path)return nil})if err != nil {fmt.Printf("filepath.Walk() returned %v\n", err)return nil//log.LOGGER("Error").Error("filepath.Walk() returned %v\n", err)}fmt.Println("Cost Time:",time.Since(StartTime))return dst_target
}func main(){s:=[]string{}n:=[]string{}pathname:="D://go_copysrc"fmt.Printf("filepath walk cost time returned \n")n = GetALLFIles_walk(pathname)fmt.Println("the number of file is %v,content is:%v",len(n),n)fmt.Printf("io util cost time returned \n")StartTime :=time.Now();s,_=GetAllFile(pathname,s)fmt.Println("Cost Time:",time.Since(StartTime))fmt.Println("the number of file is %v,content is:%v",len(s),s)}

golang中io/ioutil.readdir和path/filepath.walk遍历获取目录下文件性能比较相关推荐

  1. golang filepath.Walk遍历指定目录下的所有文件

    package main import (     "fmt"     "os"     "path/filepath" ) func wa ...

  2. Golang获取目录下的文件及目录信息

    一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() {pwd,_ := os.Getwd()//获取文件或目录相关信息fileInfoList,err := ioutil. ...

  3. c# 遍历文件夹深度_C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...

    //遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName); var list = GetAll(dir); /// ...

  4. Ruby和SHELL中如何遍历指定目录的文件

    在工作中我们有在Ruby和SHELL中如何遍历指定目录的文件的需求,这个应该如何来实现呢?网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示: #!/usr/bin ...

  5. 【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件

    目录 一.访问目录相关函数 1.打开/访问目录 (opendir / fdopendir) 2.读取目录内容 (readdir) 3.关闭目录 (closedir) 二.遍历指定目录下的所有文件 一. ...

  6. windows 查找目录下文件中包含某个字符的文件

    一.可以使用windows自带的findstr来实现. 例子(1) findstr /s /i "string" . 上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中 ...

  7. Python的 sys.path.append()、os.path.dirname(os.path.abspath(file))、使用os模块动态获取目录或文件路径

    sys.path.append() 当我们导入一个模块时:import  xxx,默认情况下python解析器会搜索当前目录.已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中: &g ...

  8. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  9. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

最新文章

  1. swift iOS8 XIB 问题 ViewController.init() xib
  2. ubuntu “快捷方式”
  3. 互联网1分钟 |1224
  4. php数组去空函数怎么写,分享php数组去除空值函数
  5. JVM真香系列:.java文件到.class文件
  6. html填满剩余空间,html – 标题,两侧填充剩余空间
  7. Selenium 特点
  8. ADOQuery的locktype属性
  9. ASA 5520配置failover及双出口
  10. wls12C启用Gzip
  11. 浏览器中加载CNN进行手写数字识别,并部署到Gitee Page
  12. 全国各地市统计年鉴汇总2021
  13. 在线编程JavaScript
  14. 设计FMEA步骤五:风险分析
  15. 嵌入式 C 语言(上)
  16. 计算机需要英语水平的标准,计算机专业英语课程标准和要求
  17. excel根据空格把数据分列
  18. 【附PPT下载】2021腾讯广告算法大赛 ACM MM Grand Challenge录用论文揭晓
  19. 【嵌入式Linux开发一路清障-连载03】Ubuntu22.04使用Mount加载硬盘或NAS等硬盘
  20. R语言基于lm模型构建线性回归模型(蟋蟀的鸣叫声与温度的关系)、计算回归模型的RMSE指标、计算回归模型的R方指标(R-squared)

热门文章

  1. The plugin `fluttertoast` uses a deprecated version of the Android embedding.
  2. 巧用文件改名 保障网络安全十招(转)
  3. 耶鲁大学开放课程.哲学.死亡 第一集观后感
  4. 中国联通关闭2g 3g信号服务器,中国联通回应关闭2G、3G信号 设备不支持联通3G制式...
  5. 前端面试每日3+1(周汇总2019.06.02)
  6. 活动 | 21天简笔画训练营,我想对你说……
  7. 新知识:去掉li前面的项目符号(小圆点)
  8. HTML-spanがtext-align无效的问题
  9. 有参构造函数和无参构造函数的区别
  10. java最全学习路线