再帰的にディレクトリを処理する

再帰とは、関数内から、その関数を呼び出して、同様の処理を行うことをいいます。再び帰ってくるわけですね。ディレクトリなど階層構造は再帰が使えます。

ディレクトリを再帰的に探索し、処理する抽象クラスがあると便利です。そこでサブディレクトリを処理する抽象クラスRecurseDirを作ってみました。

こちらは使用例です。サブディレクトリをすべて探索してリストアップし、そこからファイルを取り出す関数を定義しています。

import java.util.ArrayList;
import java.util.Random;

public class FlatDir extends RecurseDir {
    ArrayList<String> list=new ArrayList<>();
    
    @Override
    public void executeOnFile(String fileName) {
        list.add(fileName);     
    }

    @Override
    public void executeOnDirectory(String fileName) {

    }
    
    /**
     * Randomly gets a PDF file.
     * 
     * @return file name
     */
    public String getRandom(){
        Random random=new Random();
        int index=random.nextInt(list.size());
        return list.get(index);     
    }
}

FileUtils:

RecurseDir.javaディレクトリを再帰的に探索し、処理する抽象クラス
DirList.javaディレクトリの内容をサブディレクトリも含めて再帰的にすべて表示する
DirSum.java指定されたディレクトリおよび含まれるサブディレクトリにあるファイルのサイズを加算する
FindFile.java正規表現で指定された文字列をファイル名に含むファイルをサブディレクトリを含め検索し、表示する


File(s)Description
FileUtils再帰的にディレクトリを処理する
inserted by FC2 system