Java - ファイルとディレクトリ

File クラス

Java でファイルを扱う場合は Fileクラスを使用します。対象となるファイルをディレクトリパスを付けて指定します。

File file = new File("C:¥¥sample.txt");
File クラス

上記のサンプルコードは、Windows におけるファイル指定です。C ドライブ直下にある sample.txt を対象にしています。また、ディレクトリパスの区切り文字は、¥ ではエスケープ文字となるため、¥¥ のように重ねて記述します。

絶対パスと相対パス

ディレクトリパスの指定方法には絶対パス指定と、相対パス指定があります。

絶対パス指定とは、最上位に位置するルートディレクトリからパスをすべて明記する指定方法です。例えば、Windows でのルートディレクトリは一般的に C ドライブになります。

File file = new File("C:¥¥tmp¥¥sample.txt");
絶対パス

相対パス指定とは、プログラムが実行されている現在位置 (カレントディレクトリ) からのパスをすべて明記する指定方法です。例えば、同一ディレクトリにあるファイルであれば、ディレクトリ指定を省略してファイル名の指定も可能です。

相対パス指定で、カレントディレクトリを表すには . で表します。例えば、カレントディレクトリに tmp というディレクトリがあり、その中のファイルを指定する場合は、以下のように記述します。

File file = new File(".¥¥tmp¥¥sample.txt");
相対パス

相対パス指定で、カレントディレクトリから見て、ひとつ上のディレクトリを表すには .. で表します。例えば、カレントディレクトリから見て、ひとつ上のディレクトリのファイルを指定する場合は、以下のように記述します。

File file = new File("..¥¥sample.txt");
相対パス

カレントディレクトリから見て、ふたつ上のディレクトリの場合は、以下のように記述します。

File file = new File("..¥¥..¥¥sample.txt");
相対パス

ファイルとディレクトリ

Java では、ファイルもディレクトリも同じオブジェクトとして扱います。つまり、ディレクトリもひとつの File クラスのオブジェクトとして扱います。例えば、C ドライブ直下の tmp ディレクトリを扱うためには以下のように記述します。

File file = new File("C:¥¥tmp¥¥");
ファイルとディレクトリ

File クラスのオブジェクトに含まれるファイルやディレクトリ一覧を出力するには、list メソッドを使用して以下のように記述します。

import java.io.File;

class FileList{
  public static void main(String args[]){
    File c = new File("C:¥¥");

    String filelist[] = c.list();
    for (int i = 0 ; i < filelist.length ; i++){
      System.out.println(filelist[i]);
    }
  }
}
ファイルとディレクトリ

list メソッドは、File クラスのオブジェクトがディレクトリである場合、ファイル名の一覧を文字列型の配列を返します。ただし、これらは文字列であるため、ファイルなのかディレクトリなのかを判別できません。ファイルとディレクトリを判別するためには、以下のように行います。

  1. listFiles メソッドを使用して個々のファイルとディレクトリを File クラスのオブジェクトとして取得する。
  2. 取り出した個々のオブジェクトを isFile または isDirectory で判定する。
import java.io.File;

class FileList{
  public static void main(String args[]){
    
    File directory = new File("c:¥¥");
    File[] filelist = directory.listFiles();
    
    for (int i = 0 ; i < filelist.length ; i++) {
      if (filelist[i].isFile()) {
          // ファイル
      } else if (filelist[i].isDirectory()) {
          // ディレクトリ
      } else {
          // その他
      }
    }
    
  }
}
ファイルとディレクトリ

関連記事