lunedì 1 agosto 2011

Filtrare file in una directory


Per filtrare file tramite la loro estensione è molto comodo utilizzare l’interfaccia java.io.FilenameFilter.
Tale interfaccia, presente fin dalla versione 1.4 di Java, ha un solo metodo con firma


public boolean accept(File dir, String name)
 



Dove si implementa la logica di filtro che vogliamo.
Quindi per filtrare i file secondo la logica implementata basta chiamare il metodo della classe java.io.File


public String[] list(FilenameFilter filter)
 





Vediamo un esempio in cui abbiamo una classe generica di filtro in base alla estensione file, che accetta come costruttore l’estensione in base alla quale si vuole filtrare e che implementa FilenameFilter.



package it.test;
import java.io.File;
import java.io.FilenameFilter;
class GenericFilter implements FilenameFilter
{
       public static final String PDF=".pdf";
       public static final String EXCEL=".xls";
       String estensione;
        GenericFilter(String estensione){
             this.estensione=estensione;
       }

       @Override
       public boolean accept(File dir, String name) {
             return name.toLowerCase().endsWith(estensione);
       }
      
}
public class FileTest {
       public static void main(String[] args){
            
             try
             {
                    String directory="c:\\temp";
                    File f=new File(directory);
                   
                    FilenameFilter filtro=new GenericFilter(GenericFilter.EXCEL);
                    String[] listaExcel=f.list(filtro);
                    if(listaExcel!=null){
                    for(String s:listaExcel){
                           System.out.println(s);
                    }
                    }
                    else
                    {
                           System.out.println(String.format("Lista vuota dentro directory %s", directory));
                    }
                   
             }
             catch(Exception ex){
                    ex.printStackTrace();
             }
       }

}
 






Nessun commento:

Posta un commento