操作示例:

./scan /Document/dir

代码:

// 定义递归文件树结构体
type treeList struct {
Path string `json:"path"`
File []string `json:"file"`
Children []*treeList `json:"children"`
} func main() {
// 获取命令行输入的参数
var dir string
arg_num := len(os.Args)
if arg_num < 2 {
fmt.Println("Waring:请输入路径的名称")
return
}
dir = os.Args[1] + "/" // 初始化tree结构体
treelist := new(treeList) // 递归文件目录下的所有文件
recursion(dir, treelist) // 将递归结构体转为json
bytes, _ := json.Marshal(treelist)
// fmt.Printf("%s",bytes)
fmt.Println(string(bytes))
} // 递归函数
func recursion(dir string, treelist *treeList) *treeList {
// 读取文件夹下的所有文件
files, err := ioutil.ReadDir(dir)
if err != nil {
fmt.Printf("Dir(%s) scan error,err:%v\n", dir, err)
} // 定义存放文件的切片
var fileSlice []string // 得到文件名次或文件夹名次
for _, f := range files {
filename := f.Name()
if f.IsDir() { // 如果是文件夹,则继续递归
fpath := dir + filename + "/"
children := recursion(fpath,new(treeList))
treelist.Children = append(treelist.Children,children)
} else{ // 如果是文件
fileSlice = append(fileSlice,filename)
}
} // 写入查找路径路径
treelist.Path = dir // 当前目录的文件给到 treelist.File
treelist.File = fileSlice return treelist
}

[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. C语言初级阶段7——指针1

    C语言初级阶段7--指针1 地址与指针 1.地址:数据在内存中的存储位置编号,是一个常量. 2.指针:指针的本质就是地址. 指针变量的定义和声明 1.指针变量:存储的数据是地址. 2.定义方法:类型* ...

  2. 基于airtest验证Android端app是否安装及自动化安装

    ​ 1.检测app是否安装: 使用check_app方法检测是否安装:为什么需要在封装一层做断言呢?主要check_app方法安装成功会返回True,但是未检测到安装时直接报异常了,停止执行.无法直接 ...

  3. webpack配置跨域proxy

    首先新建一个项目: 安装vue-cli: npm i -g @vue/cli npm i -g @vue/cli-init 安装webpack: npm install webpack -g vue新 ...

  4. Calendar 获取当前月份最后一周

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Ca ...

  5. 创建function函数sys_guid时报错

    创建function函数sys_guid时报错 执行下面的命令 show variables like 'log_bin_trust_function_creators';set global log ...

  6. Jackson工具类及其配置

    1 package com.ruoyi.common.core.utils.json; 2 3 import com.fasterxml.jackson.annotation.JsonAutoDete ...

  7. 记录一次MySQL主从同步

    主库配置 server-id=1log-bin=mysql-binbinlog_format=ROWbinlog_row_image=minimalbinlog-do-db=yjtb-cloud 解释 ...

  8. 1.1 [zabbix5.4]-部署

    一.从容器安装 1.0 官网 https://www.zabbix.com/documentation/5.0/zh/manual/installation/containers   # 官方文档 h ...

  9. 禅道 docker 部署

    官方文档:https://hub.docker.com/r/idoop/zentao 1.创建本地目录:mkdir -p /data/zbox 2.启动容器: sudo docker run -itd ...

  10. 【Apifox Helper】自动生成接口文档,IDEA+Apifox懒人必备

    @ 目录 前言 缘由 接口文档对接爽,整理起来真费脑 ⏲️本文阅读时长 约10分钟 前置条件 1. IDEA开发工具 2. Apifox(不必要) 主要目标 一秒生成接口文档 水图 IDEA中项目接结 ...