java パス同士を結合する

java パス同士を結合する

javaで、パス同士を結合する手順を記述してます。

環境

  • OS windows11 home
  • java 17.0.2

手順

パス同士を結合するには、「resolve」を使用します。

パス.resolve(結合するパス);  

実際に、使用してみます。

import java.nio.file.Path;

public class App {
    public static void main(String[] args) throws Exception {
          
        // パスに変換
        Path path1 = Path.of("c:/hoge/");        
        Path path2 = Path.of("/java/sample3.txt");
        
        System.out.println(path1.resolve(path2)); // c:\java\sample3.txt        

    }
}

取得されていることが確認できます。

絶対パスを結合

絶対パスを結合するパスと指定した場合は、絶対パスが優先されます。

import java.nio.file.Path;

public class App {
    public static void main(String[] args) throws Exception {
          
        // パスに変換
        Path path1 = Path.of("c:/hoge/");        
        Path path2 = Path.of("/java/");
        
        // path2 に path1 を結合
        System.out.println(path2.resolve(path1)); // c:\hoge        

    }
}

両方とも絶対パスの場合でも同じです。

import java.nio.file.Path;

public class App {
    public static void main(String[] args) throws Exception {
          
        // パスに変換
        Path path1 = Path.of("c:/hoge/");        
        Path path2 = Path.of("c:/java/");
     
        // path2 に path1 を結合   
        System.out.println(path2.resolve(path1)); // c:\hoge        

    }
}

結合元のパスにファイル名が含まれていると、ファイル名がない結合するパスが優先されます。

import java.nio.file.Path;

public class App {
    public static void main(String[] args) throws Exception {
          
        // パスに変換
        Path path1 = Path.of("foo/hoge/sample.txt");        
        Path path2 = Path.of("/java/");
        
        System.out.println(path1.resolve(path2)); // \java       

    }
}