我正在Windows上開發Scala應用程序,並且需要將文件的路徑插入到HTML模板中。我使用Java的io
和nio
來處理文件和路徑。具有特定路徑分隔符的Java的File.toString或Path.toString
/* 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)
的問題是,relativeIncludesPath.toString
輸出包含反斜槓\
作爲分隔符 - 因爲應用程序在Windows上運行 - 但由於路徑被插入到HTML模板,它必須包含正斜槓/
代替。
由於在文檔中找不到file/path.toStringUsingSeparator('/')
之類的東西,我現在正在幫助自己,我覺得這很不吸引人。
問題:真的沒有比使用替換更好的方法嗎?
我也嘗試過使用Java的URI
,但它的relativize
是incomplete。
也許我錯過了一些東西。爲什麼你不能相對路徑,然後使用'toURI()'而不是'toString()'? – Gene 2012-07-15 18:03:47
我試過了,但後來我得到了一個絕對URI,它看起來像這樣:''file:/ C:/ root/dir/foo/inc /''。 – 2012-07-15 18:36:02
感謝您提及'URI'。我沒有意識到它可以'解決',事實證明它對我來說是完美的。 – 2013-06-06 11:36:32