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

Rispondi quotando