操作示例:

./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# NAudio 检测声音

    using NAudio.Wave;using System;using System.Collections.Generic; namespace WinFromBaidu{ class NAudi ...

  2. Python机器学习/LogisticRegression(逻辑回归模型)(附源码)

    LogisticRegression(逻辑回归) 逻辑回归虽然名称上带回归,但实际上它属于监督学习中的分类算法. 1.算法基础 LogisticRegression基本架构源自于Adline算法,只是 ...

  3. CMake指定的任务可执行文件"cmd.exe" 未能运行。System.IO.IOException:未能创建临时文件。临时文件夹已满或其路径不正确。对路径"......exec.cmd "的访问被拒绝

    我觉得是我使用VS2022的原因,网上也没有找到相同的问题.

  4. Javascript 事件派发 dispatcher

    基本使用 基础事件 let event = new Event("click") //新建click事件 node.addEventListener("click&quo ...

  5. manjaro挂载NTFS系统的方法

    本文部分引自https://blog.csdn.net/baimaozi/article/details/3134267?utm_medium=distribute.pc_relevant.none- ...

  6. WPF中的DataGrid支持Excell粘贴数据

    其中XMAL文件中的表格样式: <DataGrid x:Name="DataListView" AutoGenerateColumns="False" H ...

  7. 通过Dnsmasq自建干净的DNS服务

    不晓得为撒,用网上的一些公共DNS服务的时候,总是莫名其妙的有些网站无法解析,有时候114能解析,阿里DNS不行或者腾讯DNS不行,导致总是来回切换DNS,很是烦心. 于是就想着自己搭建一个DNS服务 ...

  8. angularJS:一个页面多个ng-app

    var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $rootScope) { $scop ...

  9. Spring注解和一些类

    Spring基础相关 声明Bean,类注解 @Component@Service@Repository IOC,自动注入,属性注解 @AutoWired @Resource @Inject 其他 @I ...

  10. table control的最小高度

    标准的表维护和不通过向导建的table control最小显示行是2. 通过向导建立的table control最小显示行是4. 前台没有任何能看出来的配置差异. 有个隐藏的最小显示行,只有把屏幕下来 ...