01. september 2009 - 10:55
Der er
4 kommentarer og
1 løsning
Filbrowser i java
Hej.
Jeg sidder og skal læse en biblioteksstruktur ind i java men bliver lidt i tvivl hvordan jeg skal gemme den.
Hvad er mest optimalt, et hashmap? Andre ideer?
Det skal ikke bare være en lang liste. Men en struktur hvor man kan se i hvilke foldere, filerne hører til.
På forhånd tak for ideer og hjælp. :)
02. september 2009 - 14:05
#4
Så fik jeg prøvet det og det ser ud til at virke. nedenunder er koden som jeg afprøvede.
Arne_v hvis du ligger et svar så får du pointene.
Tak for hjælpen til begge.
---
public class Entry {
private String name;
private boolean folder;
private List<Entry> subDirectory;
public Entry(){
}
public Entry(boolean folder, String name, List<Entry> subDirectory){
this.folder = folder;
this.name = name;
this.subDirectory = subDirectory;
}
// getter & setter
....
}
-----------------
private Entry getDirectoryStructure() {
File directory = new File("c:\\testfolder");
List<Entry> result = new ArrayList<Entry>();
File[] filesAndDirs = directory.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for(File file : filesDirs) {
Entry Entry = null;
if (file.isDirectory()) {
List<Entry> deeperList = getSubDirectory(file);
Entry = new Entry(true, file.getName(), deeperList);
} else {
Entry = new Entry(false, file.getName(), null);
}
result.add(Entry);
}
Entry rootEntry = new Entry(true, directory.getName(), result);
return rootEntry;
}
private List<Entry> getSubDirectory(File directory) {
List<Entry> result = new ArrayList<Entry>();
File[] filesAndDirs = directory.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for(File file : filesDirs) {
Entry Entry = null;
if (file.isDirectory()) {
List<Entry> deeperList = getSubDirectory(file);
result.addAll(deeperList);
Entry = new Entry(true, file.getName(), deeperList);
} else {
Entry = new Entry(false, file.getName(), null);
}
result.add(Entry);
}
return result;
}