[Go] 递归获取目录下的文件
操作示例:
./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] 递归获取目录下的文件的更多相关文章
- python递归获取目录下指定文件
获取一个目录下所有指定格式的文件是实际生产中常见需求. import os #递归获取一个目录下所有的指定格式的文件 def get_jsonfile(path,file_list): dir_lis ...
- File类 递归 获取目录下所有文件文件夹
package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...
- php递归获取目录下所有文件
<?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...
- (实用篇)PHP不用递归遍历目录下所有文件的代码
<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ fu ...
- Java递归列出目录下全部文件
Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...
- 取CPU序列号,获取网卡,取硬盘系列号,获取目录下的文件,强制删除目录
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- Python开发【笔记】:获取目录下所有文件
获取文件 import os def sub_dirs(rdir): li = os.listdir(rdir) return li def main(rdir): content = sub_dir ...
- 阿里云OSS 获取目录下所有文件
public class AliyunHandle { public static string accessKeyId = "a1uI5xxxxxxxxxrP4H"; publi ...
- Python递归遍历目录下所有文件
#自定义函数: import ospath="D:\\Temp_del\\a"def gci (path): """this is a stateme ...
- Golang获取目录下的文件及目录信息
一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() { pwd,_ := os.Getwd() //获取当前目录 //获取文件或目录相关信息 fileInfoList ...
随机推荐
- java接口自动化需要的技术
1.testNG需要了解的知识 ITestContext这个类可以直接在方法参数里使用,主要作用是可以通过它的context.getSuite()直接获取suite的相关信息.还可以通过它的 cont ...
- 对Java要学东西的认识 (一点点javascript见解)
JavaScript是一种脚本语言,它采用小程序段的方式实现编程.像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程.它的基本结构形式与C.C++.VB十分类似. ...
- 循环神经网络(Recurrent Neural Networks)(第一部分)
参考 https://www.cnblogs.com/royhoo/p/Recurrent-Neural-Networks-1.html
- JavaScript基础学习之二
目录 JavaScript HTML DOM事件 事件触发1 事件触发2 addEventListener() 事件冒泡或事件捕获? 事件委托 removeEventListener() 方法 事件对 ...
- the third change day
2022.5.9 今日名言:青春是一个短暂的美梦,当你醒来的时候,它早已消失的无影无踪.----莎士比亚 早起听了一堂听力课,感觉他教的挺好,准备跟着试试,快考试了,别来不及了. 目录 听力技巧 阅读 ...
- 深入理解css 笔记(6)
网格布局:flexbox 彻底改变了网页布局方式,但这只是开始.它还有一个大哥:另一个称作网格布局模块的新规范.这两个规范提供了一种前所未有的全功能布局引擎.跟 flexbox 类似,网格布局也是作用 ...
- MySQL count(*) 和 count(字段) 区别
count(字段)不会取Null的 select count(*) from test01 7条 select count(0) from test01 ...
- 火狐浏览器调试eval源码
火狐浏览器调试eval源码 firefox浏览器在网页调试上,有一个没法和chrome一比高下的功能,就是eval脚本的调试,有时前端架构使用了基于eval的方式,有时候可能是自己一个多行函数,每每遇 ...
- nginx 代理路径
反向代理被代理url没有截取 /report/api/ /report/api/bussinessRisk/zhucai/creditInquiry 应该是/bussinessRisk/zhucai/ ...
- mysql 以自增id等于某个random()函数算出的值为条件查出两条数据
SELECT id FROM users WHERE id = FLOOR( rand() * ( (SELECT max(id) FROM users) - (SELECT min(id) FROM ...