Javaでファイルパスを得る方法 (getPath, getAbsolutePath)

ファイルパスの取得
  • このエントリーをはてなブックマークに追加
  • Pocket

ローカルでファイルを扱うとき、ファイルやディレクトリのパスが必要だというときが必ずある。

このページではJavaのファイルやファイルパスを得る方法をまとめた。参考にしていただければと思う。

Javaのファイル・パスを得る方法

Fileクラスは、ファイルとディレクトリの両方を抽象パス名で扱っている。そのパス情報をずっと持ち続けている。もしファイルがどこに置かれているかが知りたくなったら、そのパスに関する情報を取り出せばよい。

最初のコードからパス名やファイル名を探す必要はない。ファイルであれ、ディレクトリであれ、必要な時にそのパスをFileクラスのインスタンスから得ることができる。

ファイル・パスといっても、様々な視点からの表現がある。作業中のディレクトリを基準にしてどこにあるかを表すのと、ルート・ディレクトリから表現するのは違う。

ファイル・パスを読み取るために用意されたメソッドの詳細を見てみよう。

ファイル・パスを得るメソッド

ファイル・パスを得るための4つのメソッドの詳細を説明する。どのメソッドもパス名を抽象パス名から作り出す。その関係を図は示している。抽象パス名が絶対パス名か、それとも相対パス名かによって、メソッド呼び出しによって得られる結果が異なる。

ファイル・パスを得るために用意されたメソッド:

 

パス名

getPath()

戻り値の型

public String

内容

内容:この抽象パス名をパス名文字列に変える。

 

結果の文字列は、その名前を名前順に分けるためにデフォルトの名前区切り文字を使う。

 

戻り値:抽象パス名の文字列の形式

絶対パス名

getAbsolutePath()

戻り値の型

public String

内容

内容:この抽象パス名の絶対パス名の文字列を戻す。

 

もしこの抽象パス名がいつも絶対ならば、パス名の文字列は単にgetPath()メソッドによるかのように戻される。もしこの抽象パス名が空の抽象パス名であるならば、そのシステムプロパティuser.dirによって名付けられた作業中のユーザ・ディレクトリの文字列が戻される。

もしそうでなければこのパス名はシステムに依存する方法で解決される。UNIXシステム上、作業中のユーザ・ディレクトリを基に、相対パス名から絶対パス名が作られる。マイクロソフトウィンドウズシステムにおいて、パス名によって名付けられた作業中のディレクトリを基に、相対パス名から絶対パス名が作られる。そうであってもなくても、それは作業中のユーザ・ディレクトリを基に解決される。

 

戻り値: この抽象パス名として同じファイル、もしくはディレクトリが示す絶対パス名の文字列

 

例外:SecurityException – もし必要とされるシステムプロパティの値がアクセスできなければ。

参照:isAbsolute()

親パス名

getParent()

戻り値の型

public String

内容

この抽象パス名の親のパス名文字列を戻す。もしくは、もしこのパス名が親ディレクトリ名を付けないのなら、nullのパス名を戻す。

 

一つの抽象パス名の親は、パス名の接頭語と、最後を除くパス名の並びの中にある各々の名前から構成される。もし名前の並びが空であるならば、そのパス名は親ディレクトリの名前を付けない。

 

戻り値:

この抽象パス名の親のパス名文字列を戻す。もしくは、このパス名が親ディレクトリ名を付けないのなら、nullのパス名を戻す。

getName()

戻り値の型

public String

内容

この抽象パス名によって示されたファイルの名前、もしくはディレクトリを戻す。

これはパス名の名前の並びのちょうど最後の名前である。もし、パス名の名前の並びが空であるならば、空の文字列が戻される。

 

戻り値:この抽象パス名によって示されたファイルの名前、もしくはディレクトリ。もしパス名の名前の並びが空であるならば、空の文字列。

ファイル・パスを得るサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

このプログラムは、WindowsのC:ドライブのディレクトリ:C:\temp\abcにファイル:def.txtがあるとして、各メソッドがどのようにそのパスを取り出すかを示している。また、Cドライブが指定されていないディレクトリ:\temp\abcにファイル:def.txtがある場合は、どのようにパス名が取り出されるかも示している。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] 文字列pathnameにC:\temp\abc\def.txt"を設定する。
  • [2] Fileクラスからpathnameをパス名に持つfileインスタンスを生成する。
  • [3] getPathの戻り値:抽象パスから作られてパス名を表示する。
  • [4] getAbsolutePathの戻り値:絶対パス名を表示する。
  • [5] getParentの戻り値:親パス名を表示する。
  • [6] getNameの戻り値:ファイル名またはディレクトリ名を表示する。
  • [7] 文字列pathnameWithOutDriveに\temp\abc\def.txt"を設定する。
  • [8] FileクラスからpathnameWithOutDriveをパス名に持つfileインスタンスを生成する。
  • [9] getPathの戻り値:抽象パスから作られてパス名を表示する。
  • [10] getAbsolutePathの戻り値:絶対パス名を表示する。
  • [11] getParentの戻り値:親パス名を表示する。
  • [12 getNameの戻り値:ファイル名またはディレクトリ名を表示する。

まとめ

このページではJavaでファイルのパスやディレクトリのパスを取得する方法についてまとめた。

相対パス、絶対パスそれぞれについてお伝えしたので参考にしていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. yama666 より:

    画像 
    【ファイル・パスを得るために用意されたメソッド:】

    getParent() → abc¥sef¥ghi

    が間違っていると思います。よろしくおねがいします

    1. リカレントテクノロジー より:

      ご指摘いただきありがとうございます。
      該当画像を修正いたしました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

リカレントテクノロジー へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する