ho fatto una funzione di ricerca file che dato un path(una cartella dove cercare) mi restituisce tutti i file html che trova all interno della cartella.però se creo una cartella nello stesso path dove stanno i file e provo ad eseguire la funzione mi sbuca java.lang.ArrayIndexOutOfBoundsException.da cosa dipende??come lo risolvo?
questo è il mio codice
package Cercahtml;

import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader ;
import java.io.IOException;

public class CercaFiles {

//contatore usato per numerare i file ottenuti
public static int count = 0;
//directory dove cercare
public static File from;
//vettore contenente gli absolute path dei file
public static String [] vetthtml;
//vettore contenente solo il nome dei file trovati(mi serve per stampare a video solo i nomi e non i path interi)
public static String [] appoggio;

//funzione che mi serve per inizializzare la variabile from
public static void popolapath(){
String path= "c:/cercahtml/listafilehtml/";
//directory dove cercare i file con determinate estensioni
from = new File(path);
}
public static void esploraFile(File from) {
String nome = "";
String tipo= ".html";

//utilizziamo per la ricerca un filtro
File[] files = from.listFiles(new Filter(nome, tipo));
vetthtml= new String [files.length];
appoggio= new String [files.length];

//stampiamo su ogni array i file trovati

for (int i = 0; i < files.length; i++) {

if (files[i].isFile()){
vetthtml[i]= files[i].getAbsolutePath();
appoggio[i]= files[i].getName();
count++;
}

else
esploraFile(files[i]);

}

}

}

class Filter implements FilenameFilter {
//estensione del file
private String tipo, nome;

public Filter(String nome, String tipo) {
this.nome = nome;
this.tipo = tipo;
}

//accettiamo tutti i file con estensione s e le directory che non siano
//nascoste
public boolean accept(File dir, String file) {
File f = new File(dir, file);

//controllo sul tipo.
//Ad esempio se cerco "pippo.txt" la indexOf(.txt) è uguale a 4,file.lenght è uguale a 9 ne sottraggo tipo.lenght e controllo


boolean flag1=true;
if(tipo!=null && tipo!="")
flag1=(file.indexOf(tipo) == file.length()-tipo.length());

//controllo sul nome
//flag2 è true se il file contiene la parola cercata

boolean flag2=true;
if(nome!=null && nome!="")
flag2=file.toUpperCase().indexOf(nome.toUpperCase( ))!=-1;
//ritorno i file che passano il controllo del tipo e del nome le directory

return ( ( flag1 && flag2 ) || f.isDirectory()) && !f.isHidden();

}
}