Frage von MCLii, 4

Wie kann ich mit Java herausfinden, ob ich Zugriff auf einen Ordner oder Pfad habe oder nicht?

Ich möchte gerne herausfinden, ob der Benutzer Zugriff auf einen bestimmten Pfad oder Ordner hat. Die Klasse java.io.File gibt dann zwar keine Inhalte zurück, wenn der Zugriff gesperrt ist, aber dadurch lässt sich auch nicht feststellen, ob der Ordner einfach leer oder gesperrt ist. Hat vielleicht jemand eine Idee, wie ich das anstellen könnte?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von androhecker, 1

Die Methoden gibt es doch, canWrite(), canRead() und canExecute().

Du solltest aber Java NIO verwenden, die File Klasse ist veraltet.

Kommentar von MCLii ,

canWrite() und canRead() hab ich schon ausprobiert. Die geben jedoch auch bei den Ordnern true zurück, die ich definitiv nicht öffnen darf.
Außerdem muss ich die File-Klasse verwenden, weil ich mit JavaFx eine GUI erstelle und JavaFx fordert eben io.File.

Kommentar von androhecker ,

Dokumentation lesen, die Methode gibt immer true zurück, wirft aber eine SecurityException falls man keinen Zugriff hat. Du kannst Java NIO benutzen, selbst wenn es wirklich nur eine Methode gibt die eine File akzeptiert. Einfach NIO benutzen um die Berechtigungen zu prüfen und als Parameter die toFile() Methode verwenden.

Kommentar von KnusperPudding ,

Beispiel:

File file = new File("C:\\System Volume Information");
System.out.println(Files.isWritable(Paths.get(file.toURI())));
System.out.println(Files.isReadable(Paths.get(file.toURI())));
Kommentar von MCLii ,

Oh, ich hab die Doku schon gelesen. Ich spreche ja auch von canWrite und canRead. Dort steht dran, dass diese entweder true oder false zurückliefern.

NIO hab ich mir auch schon angsehen, aber ich werde nochmal durchsehen und außerdem canExecute() austesten.

Antwort
von eeerik8, 2

Wenn du keinen Inhalt zurück gegeben bekommst könntest du versuchen eine einfach txt datei o.ä. im Ordner zu erstellen und dir dann diesen Inhalt zurück geben lassen. Wenn das nicht funktioniert hast du wohl keinen Zugriff.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten