Java'da Klasör İçeriğine Erişim
Java'da File sınıfını kullanarak bir klasörün altındaki dosya ve alt klasörlere erişmek, FileFilter'la sadece bazılarını seçmek
File Sınıfı Java'da File sınıfı hem dosyalara (file'lara) hem de klasörlere (directory'lere) karşılık gelir. Aslında klasör de bir çeşit dosyadır ve klasör olmayan dosyalara 'normal' dosya denir. Bir Klasörün İçindekileri Bulmak Bir klasörün içinde bulunan dosya ve alt klasörleri bulmak için File sınıfının list() ve listFiles() yöntemleri kullanılır. Bunlarda list() dosya ve klasörlerin sadece adlarını verirken, listFiles() dosya ve alt klasörlere ait File nesnesi dizisi döndürür. Klasörün içindekilerin sadece adı değil de oluşturulma tarih, salt okunur olup olmadığıgibi bilgiler almak için ikincisi kullanılır. Bir klasörün içindekileri dökmek için File[] list=dir.listFiles(); şeklinde bir kod kullanılabilir. Burada sadece dosyanın adı ekrana basılmaktadır. Dosya Filtresi Kullanmak Dosyaları belirten File sınıfındaki list..() yöntemleri klasörün altındaki tüm dosya ve klasörleri alır. Sadece bazı koşullara uyanları almak için FilenameFilter ve FileFilter arayüzleri kullanılır. FilenameFilter sadece adıyla ilgili bir kriter vermeyi sağlarken, FileFilter koşulun File sınıfıyla veriebilmesini sağlar. İkisi de kritere uygunluğu accept() yöntemiyle sağlarlar. Sadece dosyaları (klasörleri değilde normal dosyaları) listelemek için filtre : FileFilter filter=new FileFilter(){ şeklinde tanımlanabilir. Burada yapılan accept() yöntemini yazmak ve koşula uyulduğunda true döndürmektir. Koşulu sağlamak için bu örnekte dosyanın normal dosya olup olmadığını gösteren isFile() yöntemi kullanılmıştır. Filtreyi kullanarak listelemek için File[] normals=folder.listFiles(filter); şeklinde bir kod yazılır. Hem filtreli hem filtresiz listelem yapan örneğin tamamı : import java.io.*; public class DirectoryTest{ Kaynak www.godoro.com/Portal/Content/Article/ArticleViewPage.aspx
for(int i=0;i<list.length;i++){
System.out.println(list[i].getName());
}
public boolean accept(File file){
return file.isFile();
}
};
public static void listTest(File dir){
File[] list=dir.listFiles();
for(int i=0;i<list.length;i++){
System.out.println(list[i].getName());
}
}
public static void filterTest(File folder){
FileFilter filter=new FileFilter(){
public boolean accept(File file){
return file.isFile();
}
};
File[] normals=folder.listFiles(filter);
for(int i=0;i<normals.length;i++){
System.out.println(normals[i].getName());
}
}
public static void main(String[] args){
File dir=new File("C:\");
listTest(dir);
filterTest(dir);
}
}