Posted at

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

More than 1 year has passed since last update.


背景

ディレクトリの中に入ってるデータを確認したり抽出したりしたいなーと思ったので、

その際のコードを書き残します。

こんなイメージ.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

今回は以上です。