我有一个目录:
asv
--as-f-b-asfb---
--
在该子目录中,我有一个文件名为basepath + /my/sub/directory
示例:
file.json
我要做的是使用完整目录路径,并向后走回文件树,直到我点击my/file.json
my/sub/file.json
my/sub/directory/file.json
并找到basepath
的所有文件路径
我看着file.json
,但它似乎在目录树中向下而不是向上
答案 0 :(得分:1)
这是一种可以向后走,并沿途阅读每个file.json
的方法。
示例项目目录结构:
./
- main.go
./my
- file.json > {"location": "/my"}
./my/sub
- file.json > {"location": "/my/sub"}
./my/sub/dir
- file.json > {"location": "/my/sub/dir"}
main.go
package main
import (
"fmt"
"io/ioutil"
"path/filepath"
)
func main() {
basePath := "./"
targetPath := basePath + "my/sub/dir"
fileName := "file.json"
for {
rel, _ := filepath.Rel(basePath, targetPath)
// Exit the loop once we reach the basePath.
if rel == "." {
break
}
// Simple file reading logic.
dat, err := ioutil.ReadFile(fmt.Sprintf("%v/%v", targetPath, fileName))
if err != nil {
panic(err)
}
fmt.Println(string(dat))
// Going up!
targetPath += "/.."
}
}
输出:
{ "location": "/my/sub/dir" }
{ "location": "/my/sub" }
{ "location": "/my" }
希望您发现此方法有用。