私には理解できない問題があります。シンプルなモデルで実装されたディレクトリでファイルシステムをシミュレートしていますDirectory.java
public class Directory {
public Directory(String name, List<Directory> directory) {
this.name = name;
this.directory = directory;
}
private String name;
private List<Directory> directory;
私の問題は、指定されたパス (例: test/test2/newdir) を持つ既存のディレクトリに新しいディレクトリを追加する必要があることです。再帰を使用しようとしましたが、宛先ディレクトリを変更したときにルートが変更されていないため、問題は解決しません。誰でも私を助けてくれますか?
オンドレイ
編集:私の再帰的方法
private static Directory _digIn(Directory dir, List<String> path, int depth) {
if (depth < path.size()) {
if (dir.getDirectory() != null) {
for (Directory d : dir.getDirectory()) {
if (d.getName().equalsIgnoreCase(path.get(depth))) {
return _digIn(d, path, ++depth);
}
}
}
} else {
return dir;
}
return null;
}
このメソッドは必要なディレクトリを返します。新しいディレクトリを追加できますが、この変更はルート ディレクトリに反映されません。
EDIT2:私の挿入方法
public static void insertNewObject(Directory dirToSave, List<String> path) {
Root root = getRoot(xmlFile);
Directory dir = _digIn(root.toDir(), path, 0);
if (dir.getDirectory() != null) {
dir.getDirectory().add(dirToSave);
} else {
List<Directory> dirList = new ArrayList<>();
dirList.add(dirToSave);
dir.setDirectory(dirList);
}
}