golang中io/ioutil.readdir和path/filepath.walk遍历获取目录下文件性能比较
在使用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遍历获取目录下文件性能比较相关推荐
- golang filepath.Walk遍历指定目录下的所有文件
package main import ( "fmt" "os" "path/filepath" ) func wa ...
- Golang获取目录下的文件及目录信息
一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() {pwd,_ := os.Getwd()//获取文件或目录相关信息fileInfoList,err := ioutil. ...
- c# 遍历文件夹深度_C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...
//遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName); var list = GetAll(dir); /// ...
- Ruby和SHELL中如何遍历指定目录的文件
在工作中我们有在Ruby和SHELL中如何遍历指定目录的文件的需求,这个应该如何来实现呢?网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示: #!/usr/bin ...
- 【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件
目录 一.访问目录相关函数 1.打开/访问目录 (opendir / fdopendir) 2.读取目录内容 (readdir) 3.关闭目录 (closedir) 二.遍历指定目录下的所有文件 一. ...
- windows 查找目录下文件中包含某个字符的文件
一.可以使用windows自带的findstr来实现. 例子(1) findstr /s /i "string" . 上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中 ...
- Python的 sys.path.append()、os.path.dirname(os.path.abspath(file))、使用os模块动态获取目录或文件路径
sys.path.append() 当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录.已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中: &g ...
- Linux中/proc目录下文件详解
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- Linux中/proc目录下文件详解(二)
Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...
最新文章
- swift iOS8 XIB 问题 ViewController.init() xib
- ubuntu “快捷方式”
- 互联网1分钟 |1224
- php数组去空函数怎么写,分享php数组去除空值函数
- JVM真香系列:.java文件到.class文件
- html填满剩余空间,html – 标题,两侧填充剩余空间
- Selenium 特点
- ADOQuery的locktype属性
- ASA 5520配置failover及双出口
- wls12C启用Gzip
- 浏览器中加载CNN进行手写数字识别,并部署到Gitee Page
- 全国各地市统计年鉴汇总2021
- 在线编程JavaScript
- 设计FMEA步骤五:风险分析
- 嵌入式 C 语言(上)
- 计算机需要英语水平的标准,计算机专业英语课程标准和要求
- excel根据空格把数据分列
- 【附PPT下载】2021腾讯广告算法大赛 ACM MM Grand Challenge录用论文揭晓
- 【嵌入式Linux开发一路清障-连载03】Ubuntu22.04使用Mount加载硬盘或NAS等硬盘
- R语言基于lm模型构建线性回归模型(蟋蟀的鸣叫声与温度的关系)、计算回归模型的RMSE指标、计算回归模型的R方指标(R-squared)
热门文章
- The plugin `fluttertoast` uses a deprecated version of the Android embedding.
- 巧用文件改名 保障网络安全十招(转)
- 耶鲁大学开放课程.哲学.死亡 第一集观后感
- 中国联通关闭2g 3g信号服务器,中国联通回应关闭2G、3G信号 设备不支持联通3G制式...
- 前端面试每日3+1(周汇总2019.06.02)
- 活动 | 21天简笔画训练营,我想对你说……
- 新知识:去掉li前面的项目符号(小圆点)
- HTML-spanがtext-align无效的问题
- 有参构造函数和无参构造函数的区别
- java最全学习路线