M
michael bauer
Gast
hallo,
ich habe eine frage, ich durchsuche eine ordner mit rekursiven aufrufen auf das vorkommen von bildern mit der endung ".jpg".
gefundene erkennt er und hängt sie in meinen JTree, das geht bis auf die tiefste ebene, solange aber auch mind. ein jpg-Bild mit im unterordner liegt.
es funktioniert nicht, wenn ich einen ordner zb Tiere habe, in dem ordner sind wieder weiter ordner, in denen wiederum bilder drin wären, er müsste hier souzusagen 2 ebenen tiefer springen, aber das bekomme ich nicht hin.
wenn ich aber nun in den ordner Tiere irgendein jpg_Bild kopiere, dann findet er plötzlichwieder die weiteren unterordner.
ich komme nicht weiter, wäre super wenn mir einer helfen könnte, vielleicht ist es nur eine kleinigkeit, ich poste mal meine klassen, ich weiß, dass das "drum-herum" fehlt, aber das wäre zuviel zum posten, das sind die hauptteile des durchsuchens.
vielen dank schon mal.
Micha
ich habe eine frage, ich durchsuche eine ordner mit rekursiven aufrufen auf das vorkommen von bildern mit der endung ".jpg".
gefundene erkennt er und hängt sie in meinen JTree, das geht bis auf die tiefste ebene, solange aber auch mind. ein jpg-Bild mit im unterordner liegt.
es funktioniert nicht, wenn ich einen ordner zb Tiere habe, in dem ordner sind wieder weiter ordner, in denen wiederum bilder drin wären, er müsste hier souzusagen 2 ebenen tiefer springen, aber das bekomme ich nicht hin.
wenn ich aber nun in den ordner Tiere irgendein jpg_Bild kopiere, dann findet er plötzlichwieder die weiteren unterordner.
ich komme nicht weiter, wäre super wenn mir einer helfen könnte, vielleicht ist es nur eine kleinigkeit, ich poste mal meine klassen, ich weiß, dass das "drum-herum" fehlt, aber das wäre zuviel zum posten, das sind die hauptteile des durchsuchens.
vielen dank schon mal.
Micha
Code:
public void init() {
File dir = new File("C:/Bilder");
DefaultMutableTreeNode root;
root = new DefaultMutableTreeNode("C:/Bilder");
listDir(dir, root);
}
public void listDir(File dir, DefaultMutableTreeNode aktuell) {
File[] dirList = dir.listFiles();
DefaultMutableTreeNode child = null, subchild;
System.out.println("REKURSIVER AUFRUF listDir("+dir.toString());
for (File file : dirList) {
if(file.isDirectory() && isPicDirectory(file)==true){
//if listed item is a file, call the visitor-method
DefaultMutableTreeNode tmp_node = new DefaultMutableTreeNode(file.getName());
System.out.println("Erzeuge "+tmp_node.toString());
aktuell.add(tmp_node);
listDir(file, tmp_node);
}
}
tree = new JTree(aktuell);
tree.setRootVisible(true);
}
public boolean isPicDirectory(File dir){
boolean retVal = false;
File[] dirList = dir.listFiles();
for (File file : dirList) {
if(file.isDirectory()){
//rufe listfiles auf und schaue ob ein jpg drin ist
listFiles(file);
System.out.println("Bin in... "+file.toString());
}
else{
if(file.toString().endsWith(".jpg") || file.toString().endsWith(".JPG")){
retVal = true;
break;
}
}
}
return retVal;
} // end isPicDirectory
public Collection<File> listFiles(File dir){
ArrayList retVal = new ArrayList();
File[] dirList = dir.listFiles();
for (File file : dirList) {
if(file.isDirectory()){
//wenn verzeichnis, dann ruft er sich rekursiv selbst auf
listFiles(file);
}
else{
//recursion down into new found directory
if((file.toString().endsWith(".jpg") || file.toString().endsWith(".JPG")){
retVal.add(file);
}
}
}
return retVal;
} // end listFiles