Filtro por extensão

0 respostas
java
J

Tem um código que faz a busca por diretorios e posso delimitar o nivel da arvore que pode ser pesquisado. Quero poder trazer arquivo(s) que esteja(m) no diretorio informado com a extensão digitada pelo usuario.
Meu código traz todos os arquivos. Como faço para trazer só os arquivos com uma determinada extesão nesse código:

package controle;
import java.io.*;
import java.util.InputMismatchException;
import java.util.Locale;
import java.util.Scanner;
import org.apache.commons.io.FilenameUtils;
import java.util.List;

public class BuscaRecursiva2 {
	  
	  private int nivel = 0;
	
		  void pesquisaDiretorios() throws Exception {
		    try {
		    	@SuppressWarnings("resource")
				Scanner teclado=new Scanner(System.in);
		    	teclado.useLocale(Locale.US);
		      //variaveis com caminhos a serem pesquisados		      
		    	System.out.println("Diretório que será analisado: " );
		    	String caminhoDiretorio=teclado.nextLine();
		       	    	
		    	System.out.print("\n Extensoes de arquivos:");
		    	String mascara=teclado.next();
		    	//System.out.println("\n Extensoes não desejadas:");
		    	String negoMascara=null;
		    	
		    	
		       	System.out.println("\n Limite do nivel de busca: " );
		        nivel = teclado.nextInt();
		       	
		      File diretorio = new File(caminhoDiretorio);
		
		      //verifica a existencia do diretorio
		      if (!diretorio.exists()) {
		        throw new InputMismatchException("Não existe!");
		      }
		      
		      pesquisaMascara(diretorio.getPath(), mascara,negoMascara);
		    }
		    catch (InputMismatchException ex) {
		      ex.printStackTrace();
		    }
		  }
	 

	  public void pesquisaMascara(String diretorio, String mascara, String negoMascara)
	  
		throws Exception {
		    if (nivel >= 0) {
		      File fDir = new File(diretorio);
		      	if (fDir.isDirectory()){
		      		File[] listaFiles = fDir.listFiles();
		      		 for (File file : listaFiles ) {
		      			
			      			 if(file!=null){
			      				 List<File> f=search(file,"txt;pdf;txt;docx;xls;java;zip;jpg;rar;sh;js");
			      				 String mascaras[]= mascara.split(";");
			      				System.out.println("[ANALISANDO] " +file);
			      			 }
				      			else{
				      				List<File> f=search(file,"txt*;pdf*;txt*;docx*;bat*;java*;zip*;jpg*;rar*;sh*");
				      				String nego[]= negoMascara.split(";");
				      				
				      			 }
			      			 
						         
					        if (file.isDirectory()) {
					           if(nivel > 0){
					              nivel--;
					              // se e diretorio, entra no diretorio
					              pesquisaMascara(file.getPath(),mascara,negoMascara);
					             
					           }
					        }  else {
					            	 if (FilenameUtils.wildcardMatchOnSystem(file.getName(),mascara,negoMascara)){
					            		 System.out.println("Encontrei o arquivo:" + file.getAbsolutePath());
					            	 }
					             }
		    	   	  }
		    	   }
			    }
		      }
	  
	 private List<File> search(File file, String string) {
		// TODO Auto-generated method stub
		return null;
	}
	public String[] negos(String nego) {
		// TODO Auto-generated method stub
		return null;
	}
	public String[] masc(String mascaras) {
		// TODO Auto-generated method stub
		return null;
	}	
	public static void main(String[] args) throws Exception {
	    new BuscaRecursiva2().pesquisaDiretorios();
	  }
	
	}

Alguém poderia me ajudar?? Creio que o problema esteja na sintaxe.

Criado 16 de maio de 2017
Respostas 0
Participantes 1