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

Rispondi quotando