Procurar arquivo por extensões no SSD usando java

Boa noite, existe um metodo ou uma função para criação de um algoritmo ou programa cujo o objetivo e procurar extensões nos diretorios do sistema operacional… em linguaguem java, excluindo, movendo ou copiando os arquivos?

1 curtida

O Commons IO tem bastante coisa pronta. Se quiser algo simples e rápido, escrevi para você.

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author David
 */
public class Utils {

    /**
     * @param args the command line arguments
     */
    public static void main( String[] args ) throws Exception {
        
        // busca por todos os arquivos com extensão exe a partir
        // da raiz da unidade C
        for ( File arquivo : buscaArquivosPorExtencao( new File( "C:\\" ), "exe" ) ) {
            System.out.println( arquivo );
        }
        
    }
    
    /**
     * Executa uma busca por profundidade por arquivos com extensão desejada.
     * 
     * @param arquivo O arquivo a ser processado.
     * @param extensao A extensão que será pesquisada.
     * @return Uma lista com todos os arquivos encontrados.
     */
    public static List<File> buscaArquivosPorExtencao( File arquivo, String extensao ) {
        
        List<File> encontrados = new ArrayList<>();
        
        buscaArquivosPorExtencaoR( arquivo, encontrados, extensao );
        
        return encontrados;
        
    }
    
    /**
     * Executa uma busca por profundidade por arquivos com extensão desejada.
     * Como o sistema de arquivos é uma árvore, não há necessidade de se 
     * preocupar com ciclos no grafo.
     * 
     * @param arquivo O arquivo a ser processado.
     * @param encontrados Lista com a coleta dos arquivos encontrados com a
     * extensão desejada.
     * @param extensao A extensão que será pesquisada.
     */
    private static void buscaArquivosPorExtencaoR( File arquivo, List<File> encontrados, String extensao ) {
        
        // o arquivo é um diretório? 
        if ( arquivo.isDirectory() ) {
            try {
                // se for, percorre todos os arquivos dentro dele
                for ( File a : arquivo.listFiles() ) {
                    // para cada arquivo, invoca recursivamente esse método
                    buscaArquivosPorExtencaoR( a, encontrados, extensao );
                }
            } catch ( NullPointerException exc ) {
                // vai chegar aqui em algumas situações para arquivos do sistema
                // então, ignora esses casos
            }
            // não, o arquivo não é um diretório
        } else {
            
            // verifica se o nome do arquivo termina com a extensão
            if ( arquivo.getName().endsWith( extensao ) ) {
                // se terminar, adiciona na lista
                encontrados.add( arquivo );
            }
        }
        
    }
    
}
1 curtida