17

WindowsでScalaアプリケーションを開発していますが、ファイルへのパスをHTMLテンプレートに挿入する必要があります。私はJavaを使用ionioて、ファイルとパスを操作します。

/* 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)

問題は、アプリケーションがWindowsで実行されるため、の出力に区切り文字としてrelativeIncludesPath.toString円記号が含まれ\ていることですが、パスはHTMLテンプレートに挿入されるため、代わりに円記号を含める必要があります/

ドキュメントにあるようなものが見つからなかったのでfile/path.toStringUsingSeparator('/')、私は現在自分自身を助けていますがrelativeIncludesPath.toString.replace('\\', '/')、それはかなり魅力的ではないと思います。

質問: replaceを使用するよりも本当に良い方法はありませんか?

私もJavaを試しましたがURI不完全です。relativize

4

4 に答える 4

5

Path インターフェイスの Windows 実装は、パスを文字列として内部的に格納し (少なくともOpenJDK 実装では)、 toString()が呼び出されたときにその表現を単に返します。これは、計算が含まれておらず、パスセパレーターを「構成」する機会がないことを意味します。

このため、あなたのソリューションが現在問題を解決するための最良の選択肢であると結論付けています。

于 2012-11-09T14:50:16.527 に答える
-2

ほとんどのシステム プロパティは Java で取得できます。このリンクを見てください:

http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

あなたはこれを求めている:

Key: "file.separator"
Meaning: Character that separates components of a file path. This is "/" on UNIX and "\" on Windows.

String sep = System.getProperty("path.separator");
于 2012-07-15T18:29:11.873 に答える