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