操作示例:

  1. ./scan /Document/dir

代码:

  1. // 定义递归文件树结构体
  2. type treeList struct {
  3. Path string `json:"path"`
  4. File []string `json:"file"`
  5. Children []*treeList `json:"children"`
  6. }
  7. func main() {
  8. // 获取命令行输入的参数
  9. var dir string
  10. arg_num := len(os.Args)
  11. if arg_num < 2 {
  12. fmt.Println("Waring:请输入路径的名称")
  13. return
  14. }
  15. dir = os.Args[1] + "/"
  16. // 初始化tree结构体
  17. treelist := new(treeList)
  18. // 递归文件目录下的所有文件
  19. recursion(dir, treelist)
  20. // 将递归结构体转为json
  21. bytes, _ := json.Marshal(treelist)
  22. // fmt.Printf("%s",bytes)
  23. fmt.Println(string(bytes))
  24. }
  25. // 递归函数
  26. func recursion(dir string, treelist *treeList) *treeList {
  27. // 读取文件夹下的所有文件
  28. files, err := ioutil.ReadDir(dir)
  29. if err != nil {
  30. fmt.Printf("Dir(%s) scan error,err:%v\n", dir, err)
  31. }
  32. // 定义存放文件的切片
  33. var fileSlice []string
  34. // 得到文件名次或文件夹名次
  35. for _, f := range files {
  36. filename := f.Name()
  37. if f.IsDir() { // 如果是文件夹,则继续递归
  38. fpath := dir + filename + "/"
  39. children := recursion(fpath,new(treeList))
  40. treelist.Children = append(treelist.Children,children)
  41. } else{ // 如果是文件
  42. fileSlice = append(fileSlice,filename)
  43. }
  44. }
  45. // 写入查找路径路径
  46. treelist.Path = dir
  47. // 当前目录的文件给到 treelist.File
  48. treelist.File = fileSlice
  49. return treelist
  50. }

[Go] 递归获取目录下的文件的更多相关文章

  1. python递归获取目录下指定文件

    获取一个目录下所有指定格式的文件是实际生产中常见需求. import os #递归获取一个目录下所有的指定格式的文件 def get_jsonfile(path,file_list): dir_lis ...

  2. File类 递归 获取目录下所有文件文件夹

    package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...

  3. php递归获取目录下所有文件

    <?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...

  4. (实用篇)PHP不用递归遍历目录下所有文件的代码

    <?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ fu ...

  5. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  6. 取CPU序列号,获取网卡,取硬盘系列号,获取目录下的文件,强制删除目录

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. Python开发【笔记】:获取目录下所有文件

    获取文件 import os def sub_dirs(rdir): li = os.listdir(rdir) return li def main(rdir): content = sub_dir ...

  8. 阿里云OSS 获取目录下所有文件

    public class AliyunHandle { public static string accessKeyId = "a1uI5xxxxxxxxxrP4H"; publi ...

  9. Python递归遍历目录下所有文件

    #自定义函数: import ospath="D:\\Temp_del\\a"def gci (path): """this is a stateme ...

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

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

随机推荐

  1. FII-PRA006/010开发板硬件实验一

    FII-PRA006/010开发板硬件实验一 以一位全加器为例介绍如何利用开发板进行板载实验.一位全加器的Verilog代码如下: 1 2 3 4 5 6 7 8 9 10 module fadd1 ...

  2. Spring Boot 中处理跨域

    HTML 5中新增的跨域资源访问(Cross-Origin Resource Sharing)特性可以让我们在开发后端系统的时候决定资源是否允许被跨域访问.所谓跨域指的是域名不同或者端口不同或者协议不 ...

  3. java: 读取D:\maven\apache-maven-3.6.3\maven-repo\javax\javaee-web-api\8.0.1\ 出现 not a zip file

    解决方式 删除图片中指向jar包,然后更新maven即可

  4. js字符串常用的方法

    1.  charAt( ) 获取指定下标处的字符 let str = 'hello' console.log(str.charAt(0));//h 2.  charCodeAt 获取下标出的字符的Un ...

  5. 关于JSP无法使用静态引用的问题案例

    问题描述: 在写项目时,对于头部信息,尾部信息,分页信息等出现频率高,又很雷同的部分进行抽取时,使用到了jsp的静态引用功能,但之前我每次使用,都会导致程序报错,甚至出现tomcat无法正常启动的情况 ...

  6. LNK2001 无法解析的外部符号 "int const ROUND"

    今天在写代码时出现了这个错误,网上的解决方法都不合适 我的代码是这样,在一个cpp里申明了一个常量 //data.cpp const int ROUND = 3; 然后在一个头文件里申明为全局变量 / ...

  7. loadrunner写webservice接口

    先用soupUI调试  fiddler抓包 然后再写: web_custom_request("createSoapOrder",         "URL=http:/ ...

  8. Vue解决后台传过来的时间展示时带T

    用空格替换: {{scope.row.ctime.toLocaleString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')}} 参考作者:https: ...

  9. kendo UI级联与过滤的区别

    级联的话子项与父项是有默认值的,不会显示全部

  10. 三分钟搭建一个自己的 ChatGPT (从开发到上线)

    原文链接:https://icloudnative.io/posts/build-chatgpt-web-using-laf/ OpenAI 已经公布了 ChatGPT 正式版 API,背后的新模型是 ...