2013-07-09 11 views
20

書き直し質問は、私はこのような相対パスを使用してPathオブジェクトを作成し、いくつかのコードを持っている:Paths.get("..", "folder").resolve("filename")。後で、パス文字列 ".. \ folder \ filename"を取得したい(私はウィンドウ上にあるので、バックスラッシュ)。このコードを手動コンパイルまたはEclipseから実行すると、うまく動作します。java.nio.Pathからパス文字列を取得するには?詳細</p> <p>と

ただし、Mavenを使用して実行すると、それ以上動作しません。 toString()メソッドは、実際のパス文字列の代わりに[.., folder, filename]を返します。 path.normalize()を使用しても役に立ちません。 path.toFile().getPath()を使用すると、私が探しているものが返されますが、nio.path APIだけを使用したソリューションが必要だと思います。

+2

これは正しくないようです。 toString() 'と' Paths.get( "path"、 "to"、 "file")とtoString()はどちらも '' path/to /私のために "ファイル"。 – cambecc

+0

'Path/to/file"を返す 'Paths.get(" path/to ")。resolve(" file ")。toString()'は同じです。 – cambecc

+0

私は間違っているかもしれませんが、私にとっては両方とも同じ文字列を返します! – NINCOMPOOP

答えて

22

用途:

Paths.get(...).normalize().toString() 

別の解決策があることwoul:Paths.get("/tmp", "foo").toString()戻り、ここで/tmp/foo

Paths.get(...).toAbsolutePath().toString() 

しかし、あなたは奇妙な結果を得ることができます。あなたのファイルシステムは何ですか?

+0

これが失敗したときの詳細情報を更新しました。 – Jorn

+0

これは本当にあなたが使用しているjava.nio.Pathsですか? – fge

+0

はい、私は確信しています: 'java.nio.file.Paths'は正確です。 – Jorn

関連する問題