11

のようなパスが与えられた場合、/a/./b/c/../dすべての「現在のディレクトリ」インジケータ(つまり、期間)と「親ディレクトリ」インジケータ(つまり、..)を削除して..を指定しa/b/dます。

を使用することもできますFile.getCanonicalPath()が、それによって、不要なシンボリックリンクも解決されます。

簡単な方法はありますか?つまり、トークナイザーを作成してすべて自分で処理するよりも簡単です。

'。'の正しい名前を教えていただければボーナスポイント および「..」はこのコンテキストにあります。

4

3 に答える 3

12

グアバもこれを として持っていFiles.simplifyPath(String)ます。ただし、(JDK7 を使用できる場合) 最善の策は、パスを として表し、正規化されたバージョンを取得するためにPath使用することです。Path.normalize()

于 2012-11-08T03:06:17.243 に答える
4

Apache Commons IOライブラリFilenameUtils.normalize()で使用できます。ここで javadoc を参照してください

「ドット」( .) は現在のディレクトリで、「ドット ドット」( ..) は親ディレクトリです。UNIX ディレクトリで読み取ります

于 2012-11-08T02:02:26.450 に答える
2

この質問 (Java 7 以降) もご覧ください: Java: how to normalize paths with nio Path?

このソリューションは優れていますが、移植性がありません (Windows マシンでは動作しません)。

于 2018-01-15T11:50:23.407 に答える