Javaで相対パスを絶対パスへ変換するにはPathクラスのtoAbsolutePath()メソッドを使用すると簡単に変換出来ます。
Path.toAbsolutePath()のJavaDoc
Javaソース
引数で相対パスを受け取ってそれを絶対パスへ変換しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package sample; import java.nio.file.Path; import java.util.Objects; /** * <p>[概 要] File操作サンプルクラス</p> * <p>[詳 細] </p> * <p>[備 考] </p> */ public class FileSamples { /** * <p>[概 要] 相対パス ⇒ 絶対パスへ変換</p> * <p>[詳 細] </p> * <p>[備 考] </p> * @param relativePath 相対パス * @return 絶対パス */ public static Path toAbsolutePath(Path relativePath){ Path result = null; if(Objects.nonNull(relativePath)) { if(relativePath.isAbsolute()) { // 絶対パスならそのまま返却 return relativePath; } // 絶対パスへ変換 result = relativePath.toAbsolutePath(); } return result; } } |
JUnitサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package sampleTest; import static org.junit.Assert.*; import java.nio.file.Path; import java.nio.file.Paths; import org.junit.Test; import sample.FileSamples; /** * <p>[概 要] File操作サンプルのテストクラス</p> * <p>[詳 細] </p> * <p>[備 考] </p> */ public class FileSamplesTest { @Test public void parseDateToWarekiTest() { // 準備 Path path1 = Paths.get("", "SampleXml.xml"); // カレントディレクトリから相対パスを取得 Path path2 = Paths.get("C:\\pleiades-2022-06-ultimate-win-64bit-jre_20220515\\workspace\\SampleJava1\\SampleXml.xml"); // 絶対パスを指定 // 実行 Path result1 = FileSamples.toAbsolutePath(path1); Path result2 = FileSamples.toAbsolutePath(path2); Path result3 = FileSamples.toAbsolutePath(null); // 検証 assertEquals("絶対パスの値が一致していません。", "C:\\pleiades-2022-06-ultimate-win-64bit-jre_20220515\\workspace\\SampleJava1\\SampleXml.xml", result1.toString()); assertEquals("絶対パスの値が一致していません。", "C:\\pleiades-2022-06-ultimate-win-64bit-jre_20220515\\workspace\\SampleJava1\\SampleXml.xml", result2.toString()); assertEquals("絶対パスの値が一致していません。", null, result3); } } |