File.isFile()
und File.isDirectory()
geben beide nicht false zurück, wenn File
nicht der angegebene Typ ist, sondern auch wenn File
selbst nicht im Dateisystem vorhanden ist. Wie kann ich feststellen, ob das File
eine Datei oder ein Verzeichnis darstellt, wenn es nicht existiert?
Im Allgemeinen kann ein bestimmter Pfad sowohl ein Verzeichnis als auch eine Datei darstellen. Solange auf diesem Pfad weder ein Verzeichnis noch eine Datei erstellt wird, ist die Vorstellung, dass es für das eine oder das andere ist, ungültig.
Es gibt jedoch einen Sonderfall. Wenn der Pfad mit einem Pfadtrennzeichen endet ('/' auf Unix-ähnlichen Systemen, '\' auf Windows und vielleicht etwas völlig anderem auf anderen Systemen), dann kann der Pfad zumindest auf Unix-ähnlichen Systemen nicht der einer Datei sein. Ich weiß nicht, ob das für alle Systeme gilt.
Ihre Frage ist wie die Frage:
"Wie kann ich feststellen, ob diese Box eine Katze oder einen Hund enthält, wenn sie leer ist?"
Auf den ersten Blick ist diese Frage unsinnig und so auch Ihre. Wenn eine Datei ein Pfad ist, bezieht er sich auf ein nicht existierendes Dateisystemobjekt (d. H. Auf "nichts"), und fragt dann, ob dieses "nichts" & lt; & lt; & lt; & lt; & lt; & lt; Eine Datei oder ein Verzeichnis ist bedeutungslos. Es ist offensichtlich weder.
Insbesondere gilt zu jedem beliebigen Zeitpunkt für alle folgenden Prädikate:
%Vor%Sie können nicht
Die Datei muss zuerst existieren, um zu wissen, was sie IST (Ich verstehe, dass, wenn die Datei nicht existiert, es nichts ist)
Der Javadoc sagt in beiden Fällen:
true, wenn und nur wenn die Datei mit diesem abstrakten Pfadnamen existiert und [...]
Eine Datei, die noch nicht existiert, könnte beides sein.
Ich denke, die Antwort ist, dass Sie es nicht können. Ein Teil des Grundes ist, dass es einfach nicht existiert. Der Rest hat mit der Systemunabhängigkeit von Java zu tun. Abhängig von dem Betriebssystem, auf dem Sie arbeiten, gibt es keinen Unterschied zwischen einer Datei und einem Verzeichnis. In UNIX zum Beispiel ist alles eine Datei. Pipes, Verzeichnisse, Links - alles technische Dateien.
Der abstrakte Pfadname, auf den das File-Objekt verweist, kann unverändert sein, bis Sie entweder mkdir()
oder createNewFile()
darauf ausführen.
Tags und Links java