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