在使用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. PyQt5之QThread线程模块
  2. 从DataSet导出Txt
  3. ic5141运行出现cannot compile ahdlcmi module解决方案
  4. 使用一些可选的将字符串配置属性转换为其他类型
  5. SAP License:SAP顾问薪酬
  6. Linux上利用NFS实现远程挂载
  7. ftrace 的使用【转】
  8. Moscow Pre-Finals Workshop 2020 - Legilimens+Coffee Chicken Contest (XX Open Cup, Grand Prix of Nanj
  9. windows10未安装任何音频输出设备(1903、1909)
  10. fanuc系统服务器连接,FANUC IO LINK i地址分配操作方法
  11. 缝隙天线简介[搬运]
  12. nginx-proxy-manager在线申请证书
  13. android模拟器命令大全,雷电安卓模拟器命令行整理贴
  14. 9 年小厂老前端的年终总结(90 后,12 年毕业,工作 9 年,发过传单,做过运营)
  15. Cousera吴恩达深度学习第二次编程作业
  16. 软件工程第五章——总体设计
  17. html5另存为本地文件,javascript实现文件另存为(web api)
  18. 数据库系统之:关系代数详解-超详细
  19. 如何零成本实现微信公众号自助查券返利机器人(六)
  20. 你觉得iPhone 13能成为下一个iPhone 6s吗?

热门文章

  1. 【深度学习】生成式对抗网络的损失函数的理解
  2. 初级计算机知识试题及答案,计算机维修工初级理论知识试卷(后面附答案).doc...
  3. linux oracle 03113,oracle之ORA-03113
  4. apm飞控如何编程_APM和编程不必那么难
  5. 工程造价步骤_工程造价步骤
  6. linux下使用usb转串口,Linux下使用USB转串口线
  7. 临时关闭selinux模式 setenforce 0
  8. ios 自己服务器 苹果支付_iOS游戏开发二:苹果内支付的流程(In-App Purchases)
  9. CCTV-5的街舞比赛
  10. hot编码 字符one_详解one-hot编码