2017-03-13 2 views
0

Sagen wir, ich habe eine Datei im Dateisystem, von der ich weiß, dass sie kein symbolischer Link ist, also eine normale Datei oder ein normales Verzeichnis.So finden Sie, ob ein Pfad als Quelle für eine symbolische Verbindung verwendet wurde

Wie kann ich überprüfen, dass in Java keine symbolischen Links auf diese Datei verweisen?

Ich nehme an, ich muss vielleicht Paths.walkFileTree mit FileVisitOption.FOLLOW_LINKS verwenden, aber ich bin mir nicht sicher, vielleicht gibt es einen einfacheren Weg.

Bemerkenswert ist, dass ich auch weiß, in welchem ​​Verzeichnis symbolische Links enthalten sein können, die auf diese bestimmte Datei/Verzeichnis verweisen. Die symbolischen Links haben nicht den gleichen Namen wie die eigentliche Datei/das Verzeichnis.

Ich verwende kein Java 8, also wäre jede Lösung, die mit Java 7 kompatibel ist, großartig.

Danke!

+0

Ich bin kein Experte in diesem Bereich, aber ich bin mir ziemlich sicher, dass dies von dem Betriebssystem abhängt, auf dem Sie laufen, und Sie müssen sogar alle Dateien scannen, um symbolische Links zu finden, die auf diese Datei zeigen (AFAIK gibt es keinen Zeiger)/Verweis von der Datei auf den Link selbst). – Thomas

+0

Ich kann nicht einmal an eine effiziente Methode denken. Ich denke, dass Sie wahrscheinlich die gesamte Festplatte durchsuchen müssen, um alle Links zu finden. Dann musst du auch mit Berechtigungen umgehen ... – smac89

Antwort

1

Das Ziel eines symbolischen Links (zumindest unter Linux) hat keinen Rückwärtspfeil auf Links, die darauf verweisen. Um solche Links zu finden, müssen Sie das gesamte Dateisystem scannen.

Verwandte Themen