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());
}
}
}