Frage

Ich bin auf eine Situation gestoßen, in der Datei.isFile() gibt false zurück, was darauf hinweist, dass die Datei nicht "normal" ist.Ich kann jedoch keine Definition finden, was "normal" bedeutet.Dok link zu Oracle Staat:

Eine Datei ist normal, wenn sie kein Verzeichnis ist und darüber hinaus andere systemabhängige Kriterien erfüllt.

Die Datei gehört der _www:staff und hat Berechtigungen -rw-r--r--.Das Verzeichnis gehört auch der _www:staff und hat Berechtigungen drwxrw-r--.Der Prozess, der auf die Datei zugreift, gehört bob:staff.Das System ist macOS 10.9.Der Prozess kann die Datei problemlos lesen, laden und anzeigen;das einzige Problem ist, dass der Aufruf von isFile() false zurückgibt, was bedeutet, dass Java denkt, dass es sich nicht um eine normale Datei handelt.

Um auf die größere Frage zurückzukommen: Unter welchen Bedingungen gibt dieser Aufruf false zurück, obwohl die Datei existiert, der Pfad korrekt ist und auf die Datei zugegriffen werden kann?

War es hilfreich?

Lösung

Das Verzeichnis gehört auch der _www:staff und hat Berechtigungen drwxrw-r--.Der Prozess, der auf die Datei zugreift, gehört bob:staff.

Der Prozess hat keine "x" -Berechtigung (untersuchen) für das Verzeichnis.Der Systemaufruf, den die JVM zum Ausführen verwendet File.isFile() erfordert diese Erlaubnis.Dieser Systemaufruf schlägt fehl, also soweit File.isFile() ist besorgt, dass die Datei nicht existiert.

Es ist fast immer ein Fehler, die Berechtigung "x" für ein Verzeichnis zu entfernen, während die Berechtigung "r" erteilt wird.

Andere Tipps

In einem Unix-System kann eine Datei ein:

  • Reguläre Datei
  • Verzeichnis
  • Symbolischer Link
  • Named pipe
  • Steckdose
  • Gerätedatei
  • Tür (Sonnensystem Solaris)

"Normale" Datei bezieht sich hier auf eine reguläre Datei.Es ist der einzige Dateityp, bei dem das System keine Anforderungen an die interne Struktur der Datei stellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top