Heim >Java >javaLernprogramm >Wie kann ich in Java einen relativen Pfad aus zwei absoluten Pfaden konstruieren?

Wie kann ich in Java einen relativen Pfad aus zwei absoluten Pfaden konstruieren?

DDD
DDDOriginal
2024-12-07 07:20:15672Durchsuche

How Can I Construct a Relative Path from Two Absolute Paths in Java?

Relative Pfadkonstruktion aus absoluten Pfaden in Java

Betrachten Sie die Herausforderung, einen relativen Pfad aus zwei absoluten Pfaden zu konstruieren. Wenn beispielsweise diese absoluten Pfade gegeben sind:

/var/data/stuff/xyz.dat
/var/data

Der gewünschte relative Pfad, mit dem zweiten Pfad als Basis, ist:

./stuff/xyz.dat

Wie kann dies in Java effektiv erreicht werden?

Lösung mit URI

Um dieses Problem zu lösen, sollten Sie die Verwendung der URI-Klasse von Java in Betracht ziehen. URI bietet eine Methode, Relativize, die den Prozess der Erstellung eines relativen Pfads basierend auf den bereitgestellten absoluten Pfaden automatisiert.

String path = "/var/data/stuff/xyz.dat";
String base = "/var/data";

String relative = new File(base).toURI().relativize(new File(path).toURI()).getPath();

// relative == "stuff/xyz.dat"

Lösung mit Java 1.7 Path

Wenn Ihre Java-Version 1.7 oder ist Später können Sie auch die Relativisierungsmethode nutzen, die in java.nio.file.Path.

String path = "/var/data/stuff/xyz.dat";
String base = "/var/data";

Path basePath = Paths.get(base);
Path absPath = Paths.get(path);
Path relativePath = basePath.relativize(absPath);

// relativePath == Paths.get("stuff/xyz.dat")
verfügbar ist

Das obige ist der detaillierte Inhalt vonWie kann ich in Java einen relativen Pfad aus zwei absoluten Pfaden konstruieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn