Создайте объект Folder для хранения данных, затем создайте эти объекты, когда вы читаете из базы данных. После того как вы создали все объекты Folder, выполните последний цикл, чтобы связать каждую папку с ее родительским классом. Возможно, что-то вроде этого:
class Folder {
private String name;
private int id;
private int parentId;
private List<Folder> children = new ArrayList<Folder>();
public Folder(String name, int id, int parentId) {
this.name = name;
this.id = id;
this.parentId = parentId;
}
public void addChildFolder(Folder folder) {
this.children.add(folder);
}
public List<Folder> getChildren() {
return Collections.unmodifiableList(children);
}
public int getParentFolderId() {
parentId;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
}
Теперь, когда вы читаете данные из базы данных, вы создаете эти объекты папки (без дочерних элементов) и добавляете их на карту с помощью:
Map<Integer, Folder> data = new HashMap<Integer, Folder>();
... loop through your result set getting folder data...
Folder newFolder = new Folder(nameString, id, parentId);
data.put(newFolder.getId(), newFolder);
Используйте Integer.valueOf (String) для преобразования String в int.
Как только вы создали все папки, вы можете сделать один последний цикл для подключения родительских папок к дочерним, как это:
for(Folder folder : data.values()) {
int parentId = folder.getParentFolderId();
Folder parentFolder = data.get(parentId);
if(parentFolder != null)
parentFolder.addChildFolder(folder);
}
Наконец, просто возьмите папку с идентификатором 0 и начните создавать свои файлы на диске, используя folder.getChildren () как удобный способ перемещения вниз по дереву. Проверьте javadoc на объекте File, вам особенно нужно использовать метод mkdirs ().
Надеюсь, это поможет.