有时候,我看着我的目录,或者我想找个文件时,尤其是目录很多时,总是有点难受。
成都创新互联公司,为您提供网站建设、成都网站制作、网站营销推广、网站开发设计,对服务发电机回收等多个行业拥有丰富的网站建设及推广经验。成都创新互联公司网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
比如这个目录,是我的一个教程目录。
但是我并不能一目了然的知道每个文件夹下都有啥,并且每次找一个文件也很费事。
所以,基于上述的需求,使用Go语言,终于撸了个目录生成器,感觉还行。
通过编写的脚本,可以将目录整合成.txt文件,并且下级目录使用4个空格缩进。
先别管怎么实现的,先看代码。
package main
import (
"bytes"
"flag"
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func GenderNSymbol(char byte, count int) string {
symbolSince := bytes.Repeat([]byte{char}, count)
var symbol = string(symbolSince)
return symbol
}
// @title GenderDirTree
// @description 生成目录树
// @param path string "需要生成的目录"
// @param count int "生成相同字符的个数"
// @param char byte "生成相同字符的字符"
// @param current_tier int "当前层数"
// @param end_tier int "终止层数"
// @param fileObj int "文件对象"
// @return 无 无 "无"
func GenderDirTree(path string, count int, char byte, current_tier int, end_tier int, fileObj *os.File) {
if !(current_tier < end_tier) && end_tier != 0 {
return
}
current_tier++
files, err := ioutil.ReadDir(path)
if err != nil {
fmt.Println("错误:目录错误")
return
}
for _, file := range files {
var name = file.Name()
//生成指定数目的相同符号
var plac = GenderNSymbol(char, count)
//符号+目录
var sname = fmt.Sprintf("%s%s\n", plac, name)
//输出当前目录
fileObj.WriteString(sname)
//fmt.Println(sname)
//判断是否为目录,如果是,继续下次递归
var isDir = file.IsDir()
if isDir {
//拼接传入的目录和循环的当前目录
var nerPaht = filepath.Join(path, name)
GenderDirTree(nerPaht, count+4, char, current_tier, end_tier, fileObj)
}
}
}
func main() {
//终止层数,0表示无限层,>0表示指定层数
var end_tier int
//输入的目录
//var path = `D:\0_教程\易锦教程`
var path string
flag.StringVar(&path, "path", "", "目录")
flag.IntVar(&end_tier, "tier", 0, "终止层数")
flag.Parse()
//文件对象
var wDirPath = filepath.Join(path, "目录.txt")
fileObj, _ := os.OpenFile(wDirPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
defer fileObj.Close()
//生成目录树
GenderDirTree(path, 0, ' ', 0, end_tier, fileObj)
}
去掉注释,其实也就30行代码,就实现了这个功能。
go build main.go
采用flag包动态控制参数,参数如下。
d:>main.exe -h
Usage of main.exe:
-path string
目录
-tier int
终止层数
main.exe -path <要生成的目录> -tier <终止层级>
注意:-tier,终止层数,0表示无限层,>0表示指定层数,默认为0
此处-tier指定的是0,表示无限制生成,如果指定是1,就表示生成一层。
会在要生成的目录下,多出一个目录.txt。
本次更像是日常使用中,为了解决实际问题的脚本,其实脚本使用Python更好。
但是Go有一个更大的优势就是可以编译为exe。
这次的难点主要是理解递归,自己调自己!
分享题目:手把手教你用Go语言开发一款简易目录生成器
网页路径:http://www.shufengxianlan.com/qtweb/news7/293307.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联