Hallo,
ich möchte gerne ein Verzeichnis rekursiv auslesen, habe das auch schon hundertmal mit verschiedenen Sprachen (php vb.net c JavaScript) gemacht, aber hänge bei Java einfach fest...
Problem:
Da es sich bei dem Gerät, auf dem das Programm laufen sollte um ein Blackberry handelt, stehen mir nur
beschränkt Apis zur verfügung. (Die Klasse file() z.b. ist für "signed Applications" reserviert - kann ich also nicht)
Verfügbar:
Mir steht allerdings die FileConnection Klasse zur Verfügung, und daher wollte ich das mit den Folgenden Methoden lösen:
FileConnection.open(url) # öffnet die Fileconnection
FileConnection.list() #listet alle Dateien und Verzeichnisse auf als "Enumeration"
Enumeration.hasMoreElements() # true oder false
Enumeration.getNextElement() # nächstes
FileConnection.getName() # Datei / Ordner namen
FileConnection.isDirectory() #selbsterklärend.
Ansatz:
okay, die url für den Fileconnection open befehl, muss als String übergeben werden....
Alle weiteren überlegungen habe ich mal hier im Code "kommentiert"
Hinweis:
Das
sieht etwas komisch aus, ist aber nahezu 1:1 aus der BB-Api-Reference...
http://www.blackberry.com/developers/docs/4.7.0api/
Resultat:
Von einem Verzeichnis, dass aus ca 20 Ordnern und 340 Dateien
besteht, erhalte ich die erststen 15 Dateien (entspricht den ersten beiden Ordnern)
danach ist schluss....
Hoffe jemand hat nen Denkanstoss für mich parat.
grüße,
dognose
ich möchte gerne ein Verzeichnis rekursiv auslesen, habe das auch schon hundertmal mit verschiedenen Sprachen (php vb.net c JavaScript) gemacht, aber hänge bei Java einfach fest...
Problem:
Da es sich bei dem Gerät, auf dem das Programm laufen sollte um ein Blackberry handelt, stehen mir nur
beschränkt Apis zur verfügung. (Die Klasse file() z.b. ist für "signed Applications" reserviert - kann ich also nicht)
Verfügbar:
Mir steht allerdings die FileConnection Klasse zur Verfügung, und daher wollte ich das mit den Folgenden Methoden lösen:
FileConnection.open(url) # öffnet die Fileconnection
FileConnection.list() #listet alle Dateien und Verzeichnisse auf als "Enumeration"
Enumeration.hasMoreElements() # true oder false
Enumeration.getNextElement() # nächstes
FileConnection.getName() # Datei / Ordner namen
FileConnection.isDirectory() #selbsterklärend.
Ansatz:
okay, die url für den Fileconnection open befehl, muss als String übergeben werden....
Alle weiteren überlegungen habe ich mal hier im Code "kommentiert"
Code:
public void getFolderContent(String url){
try{
/*öffnen der FileConnection für gegenwärtiges "root" verzeichnis*/
FileConnection fconn = (FileConnection)Connector.open(url);
/*Alle Elemente Auslesen*/
for (Enumeration entry = fconn.list();entry.hasMoreElements();){
/*Pfad des nächsten Elements für evtl. Rekursion aufbauen*/
String next = url + (String)entry.nextElement();
/*Zweite FileConnection öffnen, da die methode isDirectory ja auf
Child-Elemente angewendet werden sollte*/
FileConnection fconn2 = (FileConnection)Connector.open(next);
/*Prüfen ob es wirklich ein Ordner ist*/
if (fconn2.isDirectory() == true ){
/*Ist einer, also rekursiv aufrufen*/
/*Fconn2 kann beendet werden, da sie nur der "überprüfung isDirectory diente"*/
fconn2.close();
getFolderContent(next);
}else{
/*War kein Ordner, also ist es eine Datei
/*Hier alles nötige für die Datei ausführen. fconn2 kann auch wieder beendet werden, da
Sie nur Ordner/File unterscheiden soll*/
fconn2.close();
}
}
fconn.close();
}
catch (java.io.IOException ioe) {}
}
Hinweis:
Das
Code:
for (Enumeration entry = fconn.list();entry.hasMoreElements();){
sieht etwas komisch aus, ist aber nahezu 1:1 aus der BB-Api-Reference...
http://www.blackberry.com/developers/docs/4.7.0api/
Resultat:
Von einem Verzeichnis, dass aus ca 20 Ordnern und 340 Dateien
besteht, erhalte ich die erststen 15 Dateien (entspricht den ersten beiden Ordnern)
danach ist schluss....
Hoffe jemand hat nen Denkanstoss für mich parat.
grüße,
dognose