メモ : 【Java】ディレクトリの中身を確認する


背景

ディレクトリの中に入ってるデータを確認したり抽出したりしたいなーと思ったので、
その際のコードを書き残します。

ディレクトリの中身を全部書き出す

今回はCドライブのtedkuma/BOXというディレクトリの中を確認します。こんなファイルが入ってます。

test.java
import java.io.File;

public class test {

  public static void main(String[] args) {

    File dir = new File("C:/tedkuma/BOX");  //Fileクラスのオブジェクトを生成し対象のディレクトリを指定
    File[] list = dir.listFiles();          //listFilesを使用してファイル一覧を取得
    for(int i=0; i<list.length; i++) {
      // System.out.println(list[i].toString());     //フルパス
      System.out.println(list[i].getName());      //ファイル名のみ
    }
  }
}

上のコードを実行すると…BOXディレクトリの中に入ってる
csvファイル、pngファイル、新しいフォルダーというディレクトリ 全部書き出されました。

System.out.println(list[i].getName());.getName() の部分を .toString() に書き換えると
こんな感じでファイル名がフルパスで取得できます。

ファイルだけを書き出す

今度はディレクトリは書き出さずに、ファイルだけを書き出します。
 ファイルだったら ~する  ディレクトリだったら ~する 
  if(list[i].isFile()){ と if(list[i].isDirectory()){というのを追加しています。
if(list[i].isDirectory()){ のところには何も書いてないのでディレクトリは書き出さないってことです。

test.java
import java.io.File;

public class test {

  public static void main(String[] args) {

    File dir = new File("C:/tedkuma/BOX");
    File[] list = dir.listFiles();
    for(int i=0; i<list.length; i++) {
      if(list[i].isFile()) {          //ファイルの場合
        System.out.println(list[i].getName());
      }
      else if(list[i].isDirectory()) { //ディレクトリの場合
        //何もしない
      }
    }
  }
}

実行してみます。ディレクトリ以外が出力されました。

CSVファイルだけを書き出す

contains()を使うと文字列が含まれているかを調べることが出来ます。
上で.getName()してファイル名が取得できているので、その後ろにcontains()を付けて文字列を探します。
CSVを見つけたいので.csvが含まれていたら という風に書いています。

test.java
import java.io.File;

public class test {

  public static void main(String[] args) {

    File dir = new File("C:/tedkuma/BOX");
    File[] list = dir.listFiles();
    for(int i=0; i<list.length; i++) {
      if(list[i].getName().contains(".csv")) {
        System.out.println(list[i].getName());
      }else{
        //何もしない
      }
    }
  }
}

実行してみます。pngやディレクトリは書きこまれず、csvファイルのみが書き出されています。

ファイル名に★が含まれるファイルを書き出す

上のと全く一緒なんですけど、念のため…
".csv""★"に変えただけです。

test.java
import java.io.File;

public class test {

  public static void main(String[] args) {

    File dir = new File("C:/tedkuma/BOX");
    File[] list = dir.listFiles();
    for(int i=0; i<list.length; i++) {
      if(list[i].getName().contains("★")) {
        System.out.println(list[i].getName());
      }else{
        //何もしない
      }
    }
  }
}

実行してみます。ファイル名に★がついたファイルだけが書き出されました~

今回は以上です。