Plattformübergreifende Methode zur Erkennung eines symbolischen Links / Verbindungspunkts?

8

In Java kann eine symbolische Verbindung in einer Unix-Umgebung erkannt werden, indem der kanonische und der absolute Pfad der Datei verglichen werden. Dieser Trick funktioniert jedoch nicht unter Windows. Wenn ich

ausführe %Vor%

von der Befehlszeile und führen Sie dann die folgenden Zeilen in Java

aus %Vor%

Die Ausgabe ist

%Vor%

Gibt es irgendeine Möglichkeit, eine Junction in Windows vor Java 7 zu erkennen?

    
Jherico 14.07.2010, 18:13
quelle

3 Antworten

8

Es scheint keinen plattformübergreifenden Mechanismus dafür in Java 6 oder früher zu geben, obwohl es eine ziemlich einfache Aufgabe ist, die JNA verwendet

%Vor%

BEARBEITEN: aktualisiert per Kommentar zur möglichen Fehlerrückgabe von getWin32FileAttributes()

    
Jherico 20.07.2010, 03:08
quelle
1

Die Antwort lautet "Nein". Knotenpunkte und symbolische Verbindungen sind nicht die gleichen Dinge. Die JRE sucht nicht nach ihnen, und daher unterscheiden die Funktionen, die Sie angeben, sie nicht.

Wenn Sie das gesagt haben, könnten Sie etwas mit folgendem erreichen:

Wenn das Junctioned-Verzeichnis Inhalt hat, dann kann das Ergebnis, dass der kanonische Pfadname von etwas darunter runter kommt, "überraschend" sein und die Situation offenbaren, da es wahrscheinlich ein Pfadname unter dem Ziel der Junction ist. Dies funktioniert nur, wenn das Verzeichnis, auf das die Junction zeigt, natürlich nicht leer ist.

    
bmargulies 18.07.2010 18:43
quelle
-1

Sie können diesen schmutzigen Hack für Windows ausprobieren

%Vor%     
Manish Singh 18.07.2010 23:48
quelle

Tags und Links