Ich entwickle eine Scala-Anwendung unter Windows, und ich muss einen Pfad zu einer Datei in eine HTML-Vorlage einfügen. Ich verwende Javas io
und nio
, um mit Dateien und Pfaden zu arbeiten.Javas File.toString oder Path.toString mit einem spezifischen Pfadtrennzeichen
/* The paths actually come from the environment. */
val includesPath = Paths.get("foo\\inc")
val destinationPath = Paths.get("bar\\dest")
/* relativeIncludesPath.toString == "..\\foo\\inc", as expected */
val relativeIncludesPath = destinationPath.relativize(includesPath)
Das Problem ist, dass der Ausgang der relativeIncludesPath.toString
Schrägstrich enthält \
als Trennzeichen - weil die Anwendung unter Windows läuft - aber da der Weg in eine HTML-Vorlage eingefügt werden soll, muss es enthält möglicherweise zukunfts /
statt Schrägstriche.
Da ich in der Dokumentation nichts wie file/path.toStringUsingSeparator('/')
finden konnte, helfe ich mir gerade mit relativeIncludesPath.toString.replace('\\', '/')
, was ich eher unattraktiv finde.
Frage: Gibt es wirklich keinen besseren Weg als mit ersetzen?
Ich experimentierte auch mit Javas URI
, aber es ist relativize
ist incomplete.
Vielleicht vermisse ich etwas. Warum kannst du den Pfad nicht relativieren und dann 'toURI()' anstelle von 'toString()' verwenden? – Gene
Ich habe das versucht, aber dann bekomme ich einen absoluten URI, der so aussieht: '' file:/C:/root/dir/foo/inc/''. –
Danke für die Erwähnung von 'URI'.Ich wusste nicht, dass es "lösen" könnte, und es stellt sich heraus, dass es perfekt für mich ist. –