今回は指定したファイルがどこにあるのかを調べるメソッド「getAbsolutePath()」について。
前回はファイルを作成するメソッドについて見たが、作成されたファイルがどこに作られたかを見ることもできる。
getAbsolutePath()とは?
指定されたファイルがどこに格納されているかを表示してくれるメソッド。
実行するとファイルのパスが表示される。
ファイルのパスとは以下のようなもの。
C:UsersownerDocuments百人一首
自分のパソコンのCドライブ⇒Users⇒owner⇒百人一首というように辿りつくことが出きる。
eclipse-workspaceの保存場所によって表示される内容は様々。
注意点
getAbsolutePath()はeclipseで開いている現在のパッケージへのファイルパスを表示するもの。
例え存在しないファイル名(例えば「小野小町」)を指定しても「C:Usersownereclipse-workspaceJavaTakusanRenshu小野小町」と表示されてしまう。
そのため、指定したファイルが存在していない場合は表示させないようにするべき。
⇒if-else構文を使用。
if-else構文については以下参照。
ifとelseを使った条件構文 Javaプログラミング初心者の記録vol.18
getAbsolutePath()の構文
getAbsolutePath()メソッドもJavaにもとから用意されているFileクラスの中に入っている(API)。
APIについては以下参照。
【Javaプログラミング】APIとは?使い方についても-プロショvol.64
よって「import java.io.File;」を導入することを忘れずに。
import java.io.File;
File Fileクラスのオブジェクト = new File(“ファイル名を指定“);
if(Fileクラスのオブジェクト.exists()){
System.out.println(Fileクラスのオブジェクト.getAbsolutePath());
}
else{
}
Fileクラスを導入したらFileクラスのオブジェクトを作成しないと、Fileクラスに入っているメソッドなどを使用できない。
上の「注意点」のところでも述べたように、もしif-elseを使用せずに「System.out.println(Fileクラスのオブジェクト.getAbsolutePath());」だけ使用するとする。
すると存在しないファイル名にもかかわらずファイルのパスが表示されてしまう。
それを防ぐため、if-else構文と以前見たFileクラスのexists()メソッドを使用する。
exists()メソッドについては以下参照。
【Javaプログラミング】Fileクラスとexists()メソッドを使ってみる-プロショvol.81
exists()メソッドもgetAbsolutePath()メソッドもFileクラスに入っているからこれらのメソッドを使用したいときは「import java.io.File;」一つ入れたらOK。
「Fileクラスのオブジェクト.getAbsolutePath()」だけだとファイルのパスは取得できるがそれを画面に表示できる手段がない。
そのため「System.out.println();」を使用。
getAbsolutePath()を使用したコード
以下がgetAbsolutePath()を使用したコード。
import java.io.File;
public class GetPath {
public static void main(String[] args) {
File gp = new File(“天智天皇.txt”);
if(gp.exists())
System.out.println(gp.getAbsolutePath());
else
System.out.println(“no”);
}
}
以上を実行すると私の場合は以下の結果が得られた。
これは「天智天皇.txt」ファイルが「Cドライブ⇒Users⇒owner⇒eclipse-workspace⇒JavaTakusanRenshu⇒天智天皇.txt」と辿っていけることを示している。
ここで表示できるファイルは「eclipse-workspace」の中に作成されたパッケージの中にあるファイルのみ。
私が操作しているパッケージは「JavaTakusanRenshu」だった。
表示結果を見ると「C:Usersownereclipse-workspaceJavaTakusanRenshu天智天皇.txt」と「eclipse-workspace」の中に「JavaTakusanRenshu」が入っている。
合ってる。
存在しないファイルを指定したパターンのコード
次は「eclipse-workspace」の中の操作中のパッケージ内に指定したファイルがなかった場合のコードを見る。
File gp = new File(“小野小町.txt”);
if(gp.exists())
System.out.println(gp.getAbsolutePath());
else
System.out.println(“no”);
}
}
以上を実行すると以下の結果が得られた。
これは「小野小町.txt」ファイルのパスを表示させようとしたもの。
けれど、実際には「小野小町.txt」ファイルを作成していないからそもそもファイル自体が存在しない。
if-else構文でファイルがあるかどうかをチェックされ、無いと判断されたからelseの{}内が処理された。
その結果「no」と表示されたのである。
最後に
Fileクラスのメソッドを1つ1つ見ているけれど、複数のメソッドを一度に使用することが多い。
今回もexists()メソッドを使用した。
一通りまとめ終わったら、複数のメソッドを一度に使用した例もまとめてみようと思う。
コメント