Java を使用して絶対パスから相対パスを構築する
Java でファイル パスを操作する場合、相対パスの作成が必要になる場合があります。 2 つの絶対パスから。相対パスは、ベース パスを基準とした相対的な位置を定義します。これは、ファイル操作とトラバーサルを簡略化するのに役立ちます。
質問:
2 つの絶対パスが与えられた場合:
/var/data/stuff/xyz.dat /var/data
どうすれば、 2番目のパスをベースとして使用する相対パス?この例では、予期される相対パスは ./stuff/xyz.dat です。
答え:
Java で相対パスを構築する 1 つの方法は、 URIクラス。 URI クラスは、必要なチェックと計算を実行する相対化メソッドを提供します。
URI クラスを使用して相対パスを作成する方法は次のとおりです。
String path = "/var/data/stuff/xyz.dat"; String base = "/var/data"; String relative = new File(base).toURI().relativize(new File(path).toURI()).getPath(); // relative == "stuff/xyz.dat"
この例では、相対化メソッドは、絶対パスを表す 2 つの URI オブジェクトを受け取り、相対パスを表す新しい URI オブジェクトを返します。次に、getPath() メソッドを使用して、相対パスを文字列として抽出します。
補足:
特にファイル パスの場合、Java バージョン 1.7 以降では、 java.nio.file.Path#relativeize メソッド。これを使用して、Path オブジェクト間の相対パスを直接計算できます。これにより、ファイル パスを操作するためのより最適化されたアプローチが提供される可能性があります。
以上がJava は 2 つの絶対パスから相対パスを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。