golang 获取目录下所有文件相对路径

var FileHelp = &fileHelp{}

type fileHelp struct {
}

// GetDirAllFilePath
// 获取目录下所有文件的相对路径
func (fileHelp *fileHelp) GetDirAllFilePath(dirPath string) []string {
	var filePaths []string
	// dfs 搜索
	// 参数 dir 是文件目录
	// 参数 pathPrefix 指递归的轨迹,表示目录的深度,用于拼接文件相对路径
	var dfs func(dir, pathPrefix string)
	dfs = func(dir, pathPrefix string) {
		list, _ := ioutil.ReadDir(dir)
		for _, item := range list {
			// 如果不是目录,保存路径
			if !item.IsDir() {
				filePaths = append(filePaths, pathPrefix+item.Name())
			} else {
				// 如果是目录,递归找
				nextDir := fmt.Sprintf("%s/%s", dir, item.Name())
				nextParent := fmt.Sprintf("%s%s/", pathPrefix, item.Name())
				dfs(nextDir, nextParent)
			}
		}
	}
	// 深度搜索目录
	dfs(dirPath, "")
	return filePaths
}

输出示例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值