Java
初心者
File
新人プログラマ応援

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

背景

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

こんなイメージ.png

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

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

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ファイル、新しいフォルダーというディレクトリ 全部書き出されました。
2.png

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

ファイルだけを書き出す

今度はディレクトリは書き出さずに、ファイルだけを書き出します。
 ファイルだったら ~する  ディレクトリだったら ~する 
  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()) { //ディレクトリの場合
        //何もしない
      }
    }
  }
}

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

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ファイルのみが書き出されています。
5.png

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

上のと全く一緒なんですけど、念のため…
".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{
        //何もしない
      }
    }
  }
}

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

今回は以上です。