Heim >Java >javaLernprogramm >Ist der Vergleich von „getAbsolutePath()' und „getCanonicalPath()' eine zuverlässige Methode, um festzustellen, ob ein Verzeichnis in Java 1.6 ein symbolischer Link ist?
Ermitteln symbolischer Links in Java 1.6
In einem Java-Programm, das auf Unix-Systemen läuft, ist die Unterscheidung zwischen tatsächlichen Verzeichnissen und symbolischen Links unerlässlich. In dieser Frage wird eine Methode zum Identifizieren symbolischer Links zu Verzeichnissen mithilfe einer bestimmten Bedingung untersucht.
Frage:
Kann im Kontext einer DirectoryWalker-Klasse der folgende Ansatz verwendet werden? um genau zu bestimmen, ob eine bekannte Verzeichnisinstanz einen symbolischen Link darstellt:
<code class="java">if (file.getAbsolutePath().equals(file.getCanonicalPath())) { // real directory ---> do normal stuff } else { // possible symbolic link ---> do link stuff }</code>
Antwort:
Während der bereitgestellte Ansatz eine gängige Technik zur Identifizierung möglicher symbolischer Links ist, Es kann aus folgenden Gründen nicht als zuverlässig angesehen werden:
Anstatt sich auf die absoluten und kanonischen Pfade zu verlassen Für die Datei selbst wird empfohlen, den kanonischen Pfad des übergeordneten Verzeichnisses zu verwenden. Dieser Ansatz ist genauer bei der Identifizierung symbolischer Links.
Hier ist ein Beispiel von Apache Commons, das diese Technik implementiert:
<code class="java">public static boolean isSymlink(File file) throws IOException { if (file == null) throw new NullPointerException("File must not be null"); File canon; if (file.getParent() == null) { canon = file; } else { File canonDir = file.getParentFile().getCanonicalFile(); canon = new File(canonDir, file.getName()); } return !canon.getCanonicalFile().equals(canon.getAbsoluteFile()); }</code>
Das obige ist der detaillierte Inhalt vonIst der Vergleich von „getAbsolutePath()' und „getCanonicalPath()' eine zuverlässige Methode, um festzustellen, ob ein Verzeichnis in Java 1.6 ein symbolischer Link ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!