2016年9月27日火曜日

Pathの機能(絶対パス取得)

みなさん。こんばんは。

今日はJavaSE7から導入されたPathインターフェースの絶対パス取得について

JavaSE6の方法と比較しながら見てきましょう。

まず相対パスから絶対パスに変換する処理
今までのJavaSE6の絶対パスの取得方法は

File file = new File("var.txt"); // ファイルオブジェクトの生成
String absolutePath = file.getAbsolutePath(); // 絶対パスの取得

JavaSE7のパスインターフェースの機能を使い絶対パスを取得する方法は

Path path = Paths.get("var.txt"); // パスオブジェクトの生成
Path absolutePath = path.toAbsolutePath();

なお、カレントディレクトリを表す "." や親ディレクトリを表す ".." を含む場合、

以下のように記述することでパスを正規化できます。

JavaSE6

File file = new File("C:\\Users\\kume\\..\\test.txt");
String path = file.getCanonicalPath(); // 正規化したパスを取得
System.out.println(path); // C:\Users\test.txt
File normalized = file.getCanonicalFile(); // C:\Users\test.txt

JavaSE7

Path path = Paths.get(".var.txt");
path = path.normalize(); // normalizeメソッドは冗長なパスを簡潔にするメソッド
Path absolutePath = path.toAbsolutePath(); // 絶対パスに変換
System.out.println(absolutePath); // C:\Users\var.txt

normalize()メソッドを経ずに絶対パスに変換した場合、「C:\Users\.\var.txt」と表示されます。

今日はここまでにしておきましょう。

明日もPathインターフェース機能の続きを見てみます。


人気ブログランキングへ

0 件のコメント:

コメントを投稿