zoukankan      html  css  js  c++  java
  • go递归遍历文件目录

    package main
    
    import (
    	"fmt"
    	"io/ioutil"
    	"log"
    )
    
    //文件目录树形结构节点
    type dirTreeNode struct {
    	name  string
    	child []dirTreeNode
    }
    
    //递归遍历文件目录
    func getDirTree(pathName string) (dirTreeNode, error) {
    	rd, err := ioutil.ReadDir(pathName)
    	if err != nil {
    		log.Fatalf("Read dir '%s' failed: %v", pathName, err)
    	}
    	var tree, childNode dirTreeNode
    	tree.name = pathName
    	var name, fullName string
    	for _, fileDir := range rd {
    		name = fileDir.Name()
    		fullName = pathName + "/" + name
    		if fileDir.IsDir() {
    			childNode, err = getDirTree(fullName)
    			if err != nil {
    				log.Fatalf("Read dir '%s' failed: %v", fullName, err)
    			}
    		} else {
    			childNode.name = name
    			childNode.child = nil
    		}
    		tree.child = append(tree.child, childNode)
    	}
    	return tree, nil
    }
    
    //递归打印文件目录
    func printDirTree(tree dirTreeNode, prefix string) {
    	fmt.Println(prefix + tree.name)
    	if len(tree.child) > 0 {
    		prefix += "----"
    		for _, childNode := range tree.child {
    			printDirTree(childNode, prefix)
    		}
    	}
    }
    
    func main() {
    	dirName := "D:/go/src/jet"
    	tree, err := getDirTree(dirName)
    	if err != nil {
    		log.Fatalln("read dir '%s' fail: %v", dirName, err)
    	}
    	printDirTree(tree, "")
    }
    

      

  • 相关阅读:
    pip常用命令
    Conda环境管理
    关于自动化去掉验证码(收录)
    下载安装Eclipse---来自廖雪峰老师
    linux之top命令
    python——os模块
    Crypto
    Java_局部内部类
    Java_内部类
    Java_权限修饰符
  • 原文地址:https://www.cnblogs.com/wujuntian/p/11635879.html
Copyright © 2011-2022 走看看