ホームページ >Java >&#&チュートリアル >Java は 2 つの絶対パスから相対パスを生成するにはどうすればよいですか?

Java は 2 つの絶対パスから相対パスを生成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-09 05:40:21486ブラウズ

How Can Java Generate a Relative Path from Two Absolute Paths?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。