Вот один способ, которым вы можете идти назад и читать каждый 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" }
Надеюсь, вы найдете этот подход полезным.