Geschützte Systemdateien sinnvoll umgehen bei listFiles()

mandypb86

Mitglied
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

  • 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
 

mandypb86

Mitglied
kann eigentlich nicht sein, weil

a) werden die Song-Objekte nie ohne zugehöriges File angelegt und
b) tauchen die Ordner an sich im Viewer auf

Kann es trotzdem gleich mal machen, zur Sicherheit. Bin ja gar nicht so.

Und was meinst du mit can* ausgeben? Er geht doch in die if-Abfrage rein, muss also true sein, oder hab ich seit Jahren nen falsches Verständnis einer if-Abfrage? *g*

EDIT:
getFile sind alle != null (hab ich auch so erwartet)
canExecute ist auch immer true

Hier ein neues Console Log:

Code:
$Recycle.Bin true
Boot true
Documents and Settings true
NPE in hasChildren() in ArchiveBrowserContentProvider: Documents and Settings: java.lang.NullPointerException
Dokumente und Einstellungen true
NPE in hasChildren() in ArchiveBrowserContentProvider: Dokumente und Einstellungen: java.lang.NullPointerException
PerfLogs true
Program Files true
ProgramData true
Programme true
NPE in hasChildren() in ArchiveBrowserContentProvider: Programme: java.lang.NullPointerException
Recovery true
System Volume Information true
NPE in hasChildren() in ArchiveBrowserContentProvider: System Volume Information: java.lang.NullPointerException
temp true
Users true
Windows true
WMP3E_PRO true

Noch ne Idee? *g*
 
Zuletzt bearbeitet:

Sonecc

Gesperrter Benutzer
Vielleicht prüfen ob listFiles() null liefert???

Edit:

Die Methode liefert nämlich in mehreren Fällen null zurück.
 
Zuletzt bearbeitet:

mandypb86

Mitglied
ähäm... *pfeif* *schäm*

wär vllt ne Idee *g* die sogar funktioniert

AUA

aber gut, kann der try-catch-Block ja wieder weg

Thx fürs Augen öffnen

EDIT:

Auf die gleiche Weise kann ich den beiden (und Ähnlichen) Kandidaten sicher auch begegnen, oder?

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)

Kann da da ein canRead() bzw canExecute() helfen?

Irgendwo hängt er sich beim Wechseln des Inputs des Viewers nämlich immer auf und zeigt dann überhaupt keine Directories mehr an. Denke, das liegt auch noch daran.
 
Zuletzt bearbeitet:

mandypb86

Mitglied
Wo du die File-API schon verlinkst:

die isHidden()-Methode tut ihren Job viel besser als canRead() und canExecute(), besonders, was die tollen geschützten Windows-Ordner angeht

So kann man sie auch gleich raus"filtern", weil wenn man eh nicht drauf zugreifen kann, braucht man sie auch nicht anzuzeigen.

Das gleiche gilt dann auch für die geschützten Dateien, die die "Zugriff verweigert"-Exception ausgelöst haben. Es soll doch schonmal helfen, die API mal zu lesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F mit Applet auf .htaccess geschützte Dateien zugreifen Allgemeine Java-Themen 3
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
W Wieviele Threads sind sinnvoll? Allgemeine Java-Themen 8
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
M Welche Exceptionbehandlung ist sinnvoll? Allgemeine Java-Themen 3
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
F Enums als innere Klasse sinnvoll? Allgemeine Java-Themen 3
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
D Fehlgeschlagene Logins zählen... Was ist sinnvoll? Allgemeine Java-Themen 2
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
P Eclipse Java RCP mit Eclipse e4 - sinnvoll? Allgemeine Java-Themen 3
B Datentypen JMF: Player LinkedList sinnvoll? ca 30 kurze Sounddateien Allgemeine Java-Themen 3
S [THREADS] Thread sinnvoll beenden Allgemeine Java-Themen 2
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
O ist tiefes Kopieren sinnvoll? Allgemeine Java-Themen 14
A [gelöst] Dynamischen Webseitentest automatisieren mit Java sinnvoll? Allgemeine Java-Themen 6
V Empfangene Daten sinnvoll Puffern Allgemeine Java-Themen 3
H Extra-Thread sinnvoll für XML-Datei laden? Allgemeine Java-Themen 4
S Textfeld Parser sinnvoll? Allgemeine Java-Themen 3
M Wann ist MVC sinnvoll? Allgemeine Java-Themen 14
G Strings die Zahlen enthalten sinnvoll sortieren (A2 < A10 Allgemeine Java-Themen 4
T "Programming against the interface" sinnvoll? Allgemeine Java-Themen 18
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
M wie sinnvoll parsen ? Allgemeine Java-Themen 4
M Wie parst man sinnvoll? Allgemeine Java-Themen 7
A Als FINAL deklarieren -> sinnvoll? Allgemeine Java-Themen 16
K Regex Versucher 2 *Update - sinnvoll und schön* :) Allgemeine Java-Themen 6
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9
G klassendesign. aber wie (sinnvoll)? Allgemeine Java-Themen 8

Ähnliche Java Themen


Oben