Menggunakan FilenameFilter untuk Filter Extension

By | February 12, 2022
551 Views

Menggunakan FilenameFilter untuk Filter Extension merupakan class abstract yang bisa kalian gunakan untuk filtering file berdasarkan extensionnya. Penggunaan filter extension yang sangat berguna agar file yang kita maksud nanti tidak semua terload karena yang benar-benar dibutuhkan saja.

Library dasar java terkadang cukup ribet tidak semudah menggunakan C#, untuk urusan filter extension juga cukup ribet. Dalam proses IO akan menggunakan class File yang tidak sesuai namanya agak rancu. Class File ini masih cukup abstract sekali. Misalkan untuk akses sebuah file seperti berikut

File file = new File("D:/");


Kita akan mencoba untuk mendapatkan isi semua file dan folder!

File[] files = file.listFiles();

Dengan cara diatas maka akan tampil file dan folder (tanpa subfolder)

File[] files = file.listFiles();
        for(int i=0;i<files.length;i++){
            System.out.println(files[i].getAbsolutePath());
        }

Bagaimana mendapatkan file dengan extension tertentu? gunakan class FilenameFilter, misalkan untuk mencari file *.mp3

File[] files = file.listFiles(new FilenameFilter(){
        @Override
        public boolean accept(File dir, String name) {
                return name.toLowerCase().endsWith(".mp3");
            }
        });
        for(int i=0;i<files.length;i++){
            System.out.println(files[i].getAbsolutePath());
        }

Menggunakan function rekursif

Untuk mencari file dalam subfolder maka kita butuh function/method recursif

public class NewMain {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    
        NewMain m = new NewMain();
        m.cari(new File("D:/MiniTab"));
        
        int endl = 0;                
    }    
   
    
    public void cari(File file){        
        File[] files = file.listFiles();
        for(int i=0;i<files.length;i++){            
            if(files[i].isDirectory()){ //jika folder maka telusuri lagi               
                System.out.println("\t"+files[i].getAbsolutePath());
                cari(new File(files[i].getAbsolutePath()));                
            }else{ //file tampilkan!
                
                System.out.println("\t"+files[i].getAbsolutePath());                                
            }         
        }
    }
}

Sekarang kita perlu menambahkan filter secara manual dengan mengubah kodenya sebagai berikut files[i].getAbsolutePath().toLowerCase().endsWith(".mp3")

 

File[] files = file.listFiles();
        for(int i=0;i<files.length;i++){            
            if(files[i].isDirectory()){ //jika folder maka telusuri lagi               
                //System.out.println("\t"+files[i].getAbsolutePath());
                cari(new File(files[i].getAbsolutePath()));                
            }else{ //file tampilkan!                
                if(files[i].getAbsolutePath().toLowerCase().endsWith(".mp3")){
                    System.out.println(files[i].getAbsolutePath());
                }
            }
        }

Menggunakan kode diatas maka searching file seperti di file explorer nya windows namun ingat kode diatas kalian jika perlu tambahkan

if(files!=null){
    //kode 
}

agar tidak terjadi error sebelum looping