Hey Leute,
ich lese das Laufwerk C: ein. Dort gibt es bestimmte Ordner, die nicht geöffnet werden dürfen (Kein Zugriffsrecht).
Beim Einlesen dieser nicht zugriffsberechtigten Ordner, wird die NullPointerException geworfen. Da ich aber vorher frage, ob ich da Rechte zum Lesen habe und ich true zurückgeliefert bekomme, gehe ich normalerweise davon aus, dass ich da auch Rechte habe...
Komisch ist nur, dass ich gar nicht true zurückgeliefert bekommen dürfte auf diesen Ordnern...
Habe den Pfad meines "verbotenen" Ordners als String in ein neues File gesteckt und auf dem File dann canRead(), canWrite() abgefragt - Ergebnis: beide liefern true.
Wie ist das möglich? Gibt es irgendwelche Tücken bei canRead(), canWrite() auf einem File?
Hier übrigens die Methode, bei der die Nullpointer geworfen wird (Die, fürs Einlesen von C: )
@EDIT: Wenn ich die Methode des SecurityManagers "checkRead(f.getAbsolutePath()) aufrufe, sagt der mir Access denied in Form einer Exception. Komisch, dass der es kapiert und das File nicht...
Gruß Basti
ich lese das Laufwerk C: ein. Dort gibt es bestimmte Ordner, die nicht geöffnet werden dürfen (Kein Zugriffsrecht).
Beim Einlesen dieser nicht zugriffsberechtigten Ordner, wird die NullPointerException geworfen. Da ich aber vorher frage, ob ich da Rechte zum Lesen habe und ich true zurückgeliefert bekomme, gehe ich normalerweise davon aus, dass ich da auch Rechte habe...
Komisch ist nur, dass ich gar nicht true zurückgeliefert bekommen dürfte auf diesen Ordnern...
Habe den Pfad meines "verbotenen" Ordners als String in ein neues File gesteckt und auf dem File dann canRead(), canWrite() abgefragt - Ergebnis: beide liefern true.
Wie ist das möglich? Gibt es irgendwelche Tücken bei canRead(), canWrite() auf einem File?
Hier übrigens die Methode, bei der die Nullpointer geworfen wird (Die, fürs Einlesen von C: )
Java:
private void readFolder(File f) {
if (f != null)
if (f.exists()) {
if (f.canRead())
if (f.isDirectory())
for (File tmpFile : f.listFiles()) {
if (tmpFile.isDirectory() && !tmpFile.isHidden()) {
// .isHidden(), because there is no permission
// on
// most hidden Files
System.out.println(tmpFile.getAbsolutePath()
+ " ");
folderCounter++;
readFolder(tmpFile);
} else if (tmpFile.isFile() && !tmpFile.isHidden())
fileCounter++;
}
}
}
@EDIT: Wenn ich die Methode des SecurityManagers "checkRead(f.getAbsolutePath()) aufrufe, sagt der mir Access denied in Form einer Exception. Komisch, dass der es kapiert und das File nicht...
Gruß Basti
Zuletzt bearbeitet: