私は単純な問題を解決する方法を探していて、この再帰的な解決策を見つけました:https ://stackoverflow.com/a/674119/536607
これは素晴らしいことですが、開始ルートが固定されていることを前提とし、その下に残りのファイル構造を構築します。
最初にハードコードされたルートがないことを除いて、基本的に同じことを行うアルゴリズムを考え出そうとしています。たとえば、次のファイルがあります
Data/test.txt
Data/dir/results.txt
Another/image.jpg
file.dat
次のツリーになります
Data
test.txt
dir
results.txt
Another
image.txt
file.dat
したがって、トップルートを削除してからすべてを元に戻すことを除けば、他のソリューションとほとんど同じです。しかし、私はあなたが本当にそれを簡単に行うことはできないと思います(あなたはできますか?それならそれは非常に便利でしょう)
これが私が考えていたアルゴリズムです
- まず、通常どおりパスを分割します
- ツリービューにパスの最初の部分と等しいキーを持つノードが含まれているかどうかを確認する新しいメソッドを定義します(ディレクトリをルートとしているため)
- 存在する場合は、そのノードを返します。それ以外の場合は、ノードを作成して返します
- 次に、ノードと残りのパス部分を別のメソッドに渡します。このメソッドは、手順3で見つかったノードをルートとして扱い、そこから移動します。
どちらがうまくいくように聞こえますか。ファイルが保存されている場所にルート化されている場合はどうなるので、2番目のステップについてあまり明確ではありませんか?