Encontre recursivamente todos os arquivos de texto no diretório

Eu estou tentando obter os nomes de todos os arquivos de texto em um diretório. Se o diretório tiver subdiretórios, eu também quero obter qualquer arquivo de texto neles. Não tenho certeza de como continuar o processo para qualquer número de subdiretórios.

No momento, o código abaixo apenas obtém todos os arquivos de texto no diretório atual e os subdiretórios no diretório. Para cada subdiretório encontrado, ele também encontra arquivos de texto e subdiretórios mais profundos. O problema é que, se esses subdiretórios mais profundos tiverem subdiretórios ainda mais profundos, não encontrarei todos os arquivos de texto. Este parece ser um problema que requer recursão porque eu não sei quão profundo isso irá.

Aqui esta o meu codigo ate agora:

File rootDirectory = new File(rootDir);
if (rootDirectory.isDirectory()) {
    System.out.println("Valid directory");

    File[] listOfFiles = rootDirectory.listFiles(); 
    for (int i = 0; i < listOfFiles.length; i++) {
        String iName = listOfFiles[i].getName();
        if (listOfFiles[i].isFile()) {
            if (iName.endsWith(".txt") || iName.endsWith(".TXT")) {
                System.out.println("File: "+iName);
            }
        }
        if (listOfFiles[i].isDirectory()) {
            System.out.println("Directory: "+iName);

            File[] subList = listOfFiles[i].listFiles();
            for (int j = 0; j < subList.length; j++) {
                String jName = subList[j].getName();
                if (subList[j].isFile()) {
                    if (jName.endsWith(".txt") || jName.endsWith(".TXT")) {
                        System.out.println("\tFile: "+jName);
                    }
                }
                if (subList[j].isDirectory()) {
                    System.out.println("\tDirectory: "+jName);
                }
            }
        }
    }
}
else System.out.println("Invalid directory");

Editar: Funcionou, obrigado Olaf Dietsche:

public void findFiles(File root, int depth) {
    File[] listOfFiles = root.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
        String iName = listOfFiles[i].getName();
        if (listOfFiles[i].isFile()) {
            if (iName.endsWith(".txt") || iName.endsWith(".TXT")) {
                for (int j = 0; j < depth; j++) System.out.print("\t");
                System.out.println("File: "+iName);
            }
        }
        else if (listOfFiles[i].isDirectory()) {
            for (int j = 0; j < depth; j++) System.out.print("\t");
            System.out.println("Directory: "+iName);
            findFiles(listOfFiles[i], depth+1);
        }
    }
}

questionAnswers(3)

yourAnswerToTheQuestion