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;
}