2つのパスを結合したい時にはPath.resolve
を使えば良いことを知った
Path.resolve
の簡単な使い方
Path path1 = Paths.get("/Users/user/Documents"); Path path2 = Paths.get("file.txt"); Path resolvedPath = path1.resolve(path2); System.out.println(resolvedPath); // /Users/user/Documents/file.txt
path1にpath2を結合最終的に、C:\folder1\folder2\file.txt
がresolvedPath
に格納される
Path path1 = Paths.get("/Users/user/Documents"); Path path2 = Paths.get("folder2/file.txt"); Path path3 = Paths.get("/folder3/file.txt"); Path resolvedPath1 = path1.resolve(path2); Path resolvedPath2 = path1.resolve(path3); System.out.println(resolvedPath1); // /Users/user/Documents/folder2/file.txt System.out.println(resolvedPath2); // /folder3/file.txt
相対パスの場合は、結合したパスが生成されるが、絶対パスの場合は、絶対パスが維持される
Path.resolveSibling
Path.resolveSibling
を使った結合もあることを知った
これはパスの親ディレクトリを基準に、新しいPathオブジェクトを作成することができる
使い方はこのような感じ
Path path1 = Paths.get("/Users/user/Documents/file.txt"); Path resolvedPath1 = path1.resolveSibling("newfile.txt"); Path resolvedPath2 = path1.resolveSibling("../newdir/newfile.txt"); System.out.println(resolvedPath1); // /Users/user/Documents/newfile.txt System.out.println(resolvedPath2); // /Users/user/newdir/newfile.txt
../newdir/newfile.txt
のように相対パスにすると、path1のfile.txtの1つ上のディレクトリから相対パスに従ったパスと結合する