首页 > 其他分享 >golang递归获取目录下的所有文件

golang递归获取目录下的所有文件

时间:2022-12-14 11:37:13浏览次数:86  
标签:files 递归 err fmt golang pathname result fullname 目录


简言

1. golang为我们提供了完善的文件操作库,例如os,ioutil等

2. 前人已经写了文件操作的示例,具体可参考这篇博客 ​​https://colobu.com/2016/10/12/go-file-operations/#more​

效果如下

这里是目录结构                               这里是程序打印出来的结果

golang递归获取目录下的所有文件_递归

          

golang递归获取目录下的所有文件_golang递归获取所有文件_02

代码如下

package main
import (
"fmt"
"io/ioutil"
)
// 递归获取指定目录下的所有文件名
func GetAllFile(pathname string) ([]string, error) {
result := []string{}

fis, err := ioutil.ReadDir(pathname)
if err != nil {
fmt.Printf("读取文件目录失败,pathname=%v, err=%v \n",pathname, err)
return result, err
}

// 所有文件/文件夹
for _, fi := range fis {
fullname := pathname + "/" + fi.Name()
// 是文件夹则递归进入获取;是文件,则压入数组
if fi.IsDir() {
temp, err := GetAllFile(fullname)
if err != nil {
fmt.Printf("读取文件目录失败,fullname=%v, err=%v",fullname, err)
return result, err
}
result = append(result, temp...)
} else {
result = append(result, fullname)
}
}

return result, nil
}

func main() {
var files []string
files, _ = GetAllFile("E:/test/go/get_all_files")
fmt.Println("目录下的所有文件如下")
for i:=0;i<len(files);i++ {
fmt.Println(files[i])
}
}

 

标签:files,递归,err,fmt,golang,pathname,result,fullname,目录
From: https://blog.51cto.com/u_15912066/5936255

相关文章

  • 使用 SmartIDE 开发golang项目
    目录概述架构开发视图快速开始安装SmartIDECLI环境启动创建环境安装工具调试基本调试Start命令调试很荣幸在去年加入到SmartIDE产品组,从事开发工作,期间产品经历了无......
  • Go语言Golang DevOps运维开发实战
    Go语言GolangDevOps运维开发实战提高运维意识。从下到上,从上到下的工作都要做好,对上运维工作的价值和含金量可以得到认可,对下我们的工作能够提高效率解放运维。运维意识......
  • Visual Studio 2017 创建项目--解决方案文件和源文件在同一目录下
    VisualStudio2017创建项目--解决方案文件和源文件在同一目录下前言使用VisualStudio2017编程时,希望文件目录简单,希望将解决方案文件和源文件在同一目录下。可实际......
  • IDEA 项目目录如何显示target、idea文件夹
    网上的解决方法大致有两种,如下:方案一勾选ShowExcludedFiles 方案二找到需要显示的文件夹并将它删除,下图以target文件夹为例打开Settings-》Editor-》FileT......
  • golang的net包net.Dial和net.Listen
    在Go中,网络编程主要通过net包实现。支持包括TCP/IP、UDP、域名解析和Unix域socket等连接,此外,还通过net/http,net/rpc等提供了HTTP,RPC等主流应用层的连接协议。TCP服......
  • Go-15 Golang语言中time包以及日期函数
    packagemainimport( "fmt" "time")//Golangtime包以及日期函数funcmain(){ /* 1.time.Now()获取当前时间 2.Format方法会格式化输出日期字符串 3......
  • 免费开源的httpd美化目录浏览程序: Apaxy
    https://www.smbinn.com/apaxy.html介绍Apaxy是一个可定制的目录浏览程序,专为提升Web目录浏览体验而生。它使用Apache的mod_autoindex模块和一些CSS样式来覆盖目录列......
  • Android 12 平台 [FAQ28467]如何在vendor下建立目录
    [DESCRIPTION]有客户需求在vendor下建立目录。[SOLUTION]这是一个示例:在alps-mp-s0.mp1-V8.26版本以在vendor下创建dummy举例,主要是在创建vendor.img的过程中创建dummy文件......
  • java springboot项目树结构递归查询
    记录工作本文记录树结构递归查询,像菜单栏和部门首先需要一张表CREATETABLE`sys_dict`(`id`intNOTNULLAUTO_INCREMENT,`parent_id`intNOTNULL,`name`......
  • linux目录结构
    所有目录都在根目录下/目录名作用bin存放2进制可执行命令的目录,例如mkdir,cat等sbin只供系统管理员使用,例如ifconfig,initdev设备文件存放目录,例如鼠......