Hallo zusammen,
ich habe einen Dateibrowser mittels RCP nachgebaut (RCP spielt bei dem Problem aber keine Rolle). Mein Betriebssystem ist Windows 7 (ich nehme an, dass das gleiche Problem auch unter Vista auftreten würde).
Wenn ich die listFiles-Methode in meinem ContentProvider in der hasChildren-Methode aufrufe, hagelt es NullPointerExceptions und zwar bei den Ordnern, die Win 7 "schützt", sprich
Ich hab auch gar nicht die Intention, diese Ordner anzeigen zu lassen, sondern will einfach nur die NullPointerExceptions vermeiden.
Ich hab jetzt nen hundsgewöhnlichen try-catch-Block drumherum gesetzt und im catch-Block gebe ich false zurück (zur Erinnerung: hasChildren).
Aber das kann doch nicht Sinn und Zweck sein.
canExecute() liefert übrigens netterweise true zurück, obwohl es eigentlich so gar nicht true ist.
canRead() ebenfalls.
Hier mal ein Schnipsel Code:
Und hier ein Ausschnitt der Console:
Die ersten beiden Exceptions sind noch ein anderes Thema. Der Workaround dort ist mir aber erstmal recht.
Hat vielleicht jemand eine Idee, wie man diese tollen Ordner in Windows behandelt? Oder muss ich mich meinem Schicksal fügen?
Lieben Gruß
M@ndy
ich habe einen Dateibrowser mittels RCP nachgebaut (RCP spielt bei dem Problem aber keine Rolle). Mein Betriebssystem ist Windows 7 (ich nehme an, dass das gleiche Problem auch unter Vista auftreten würde).
Wenn ich die listFiles-Methode in meinem ContentProvider in der hasChildren-Methode aufrufe, hagelt es NullPointerExceptions und zwar bei den Ordnern, die Win 7 "schützt", sprich
- Dokumente und Einstellungen
- Documents and Settings
- Programme
- System Volumen Information
Ich hab auch gar nicht die Intention, diese Ordner anzeigen zu lassen, sondern will einfach nur die NullPointerExceptions vermeiden.
Ich hab jetzt nen hundsgewöhnlichen try-catch-Block drumherum gesetzt und im catch-Block gebe ich false zurück (zur Erinnerung: hasChildren).
Aber das kann doch nicht Sinn und Zweck sein.
canExecute() liefert übrigens netterweise true zurück, obwohl es eigentlich so gar nicht true ist.
canRead() ebenfalls.
Hier mal ein Schnipsel Code:
Java:
public boolean hasChildren(Object element) {
if(element instanceof Song){
try{
boolean isDir = ((Song)element).getFile().isDirectory();
if(isDir){
if(((Song)element).getFile().canExecute()){
System.out.println("canExecute() = true");
return ((Song)element).getFile().listFiles().length>0 ? true : false;
}
else{
System.out.println("canExecute() = false");
return false;
}
}
return false;
//return true;
}
catch(NullPointerException npe){
System.out.println("NPE in hasChildren() in ArchiveBrowserContentProvider: " + npe.toString());
return false;
}
}
return false;
}
Und hier ein Ausschnitt der Console:
Code:
Exception in listSongs: java.io.FileNotFoundException: C:\hiberfil.sys (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
Exception in listSongs: java.io.FileNotFoundException: C:\pagefile.sys (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
canRead() = true
canRead() = true
canRead() = true
NPE in hasChildren() in ArchiveBrowserContentProvider: java.lang.NullPointerException
canRead() = true
NPE in hasChildren() in ArchiveBrowserContentProvider: java.lang.NullPointerException
canRead() = true
canRead() = true
canRead() = true
canRead() = true
NPE in hasChildren() in ArchiveBrowserContentProvider: java.lang.NullPointerException
canRead() = true
canRead() = true
NPE in hasChildren() in ArchiveBrowserContentProvider: java.lang.NullPointerException
canRead() = true
canRead() = true
canRead() = true
canRead() = true
Die ersten beiden Exceptions sind noch ein anderes Thema. Der Workaround dort ist mir aber erstmal recht.
Hat vielleicht jemand eine Idee, wie man diese tollen Ordner in Windows behandelt? Oder muss ich mich meinem Schicksal fügen?
Lieben Gruß
M@ndy