#背景
ディレクトリの中に入ってるデータを確認したり抽出したりしたいなーと思ったので、
その際のコードを書き残します。
#ディレクトリの中身を全部書き出す
今回はCドライブのtedkuma/BOXというディレクトリの中を確認します。こんなファイルが入ってます。
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()){ のところには何も書いてないのでディレクトリは書き出さないってことです。
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**が含まれていたら という風に書いています。
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"を"★"**に変えただけです。
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{
//何もしない
}
}
}
}
実行してみます。ファイル名に★がついたファイルだけが書き出されました~
今回は以上です。