「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Javaで相対パスを絶対パスへ変換するにはPathクラスのtoAbsolutePath()メソッドを使用すると簡単に変換出来ます。

Path.toAbsolutePath()のJavaDoc

Javaソース

引数で相対パスを受け取ってそれを絶対パスへ変換しています。

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サンプル

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);
	}
	
}

 

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x