URI で相対パスを使う
java.io.File では相対パスを文字列 (String) としてしか扱えません。
File parent = new File("C:/work");
File fullpath = new File(parent, "java/HelloWorld.java");
---------------------------------------------------
C:/work/java/HelloWorld.java
ここで、java.net.URI
を利用すると、相対パスも URI のインスタンスとして存在してます。
URI のメソッドが使えるのでかなり便利になります。
フルパスの作成
URI parent = new URI("file:///C:/work/");
URI relative = new URI("java/HelloWorld.java");
URI fullpath = parent.resolve(parent.relativize(relative));
---------------------------------------------------
file:///C:/work/java/HelloWorld.java
絶対がパスか検査する。
URI relative = new URI("java/HelloWorld.java");
relative.isAbsolute();
---------------------------------------------------
false
パスを正規化する。
URI relative = new URI("java/.././HelloWorld.java");
System.out.println(relative.normalize());
---------------------------------------------------
HelloWorld.java
|