Se t'interessano anche i file delle sottocartelle, puoi aggirare il problema non usando variabili statiche e usando ArrayList al posto di array per non esser costretto ad indicare a priori la dimensione. Una possibile implementazione e'
	codice:
	/*Oggetto da inserire nell'ArrayList, cosi' ne posso fare solo una e' avere comunque 
 * tutte le info che mi interessano.
 */
public class FileInfo {
    private String name;
    private String path;
    
    public FileInfo(String name, String path){
        this.name = name;
        this.path = path;
    }
    
    public String getName() {
        return this.name;
    }
    
    public String getPath() {
        return this.path;
    }
}
 
	codice:
	import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
public class CercaFile {
    
    public static ArrayList<FileInfo> esploraFile(File from) {
        //Creo un ArrayList, meglio di un array perche' non devo sapere le dimensioni a priori
        ArrayList<FileInfo> list = new ArrayList<FileInfo>();
        
        //Creo la lista dei file applicando l'opportuno filtro
        File[] files = from.listFiles(new FilenameFilter() {
            public boolean accept(File dir, String name) {
                File tmpFile = new File(dir, name);
                //Se il file non e' nascosto ed ha la giusta estensione o e' una directory, ritorno true
                return (!tmpFile.isHidden()&&(name.endsWith(".html")||tmpFile.isDirectory()));
            }
        }
        );
        //Inserisco un oggetto FileInfo per ogni file che mi rispetta la condizione
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()){
                //Se e' un file, lo inserisco'
                list.add(new FileInfo(files[i].getName(), files[i].getAbsolutePath()));
            } else {
                //altrimenti chiamo ricorsivamente il metodo e copio i risultati della sottocartella nella lista
                ArrayList<FileInfo> tmp = (new CercaFile()).esploraFile(files[i]);
                for(int j=0; j<tmp.size(); j++)
                    list.add(tmp.get(j));
            }
        }
        //Restituisco la lista dei risultati
        return list;
    }
    
    //Piccolo main di prova
    public static void main(String[] args) {
        CercaFile cercaFile= new CercaFile();
        ArrayList<FileInfo> lista = CercaFile.esploraFile(new File("C:/cercahtml/listafilehtml/"));
        for(int i=0; i<lista.size(); i++) {
            System.out.println("File trovati: "+lista.size());
            System.out.println(lista.get(i).getName()+" - "+lista.get(i).getPath());
        }
    }
}