Le code de la classe
// list_directory(nom du dossier, extension a filtrer separés par des |);
// renvoie un array de string
class list_directory {
String extension;
String[] fichiers;
String dossier;
int nb_items;
//constructeur
list_directory(String dossier, String extension){
this.dossier=dossier;
this.extension=extension;
fichiers = listFileNames(sketchPath + "/" + dossier, extension);
nb_items=fichiers.length;
println(fichiers.length + "elements");
}
// listage le contenu d'un dossier en ne prenant que les extensions fournies -------------------------
String[] listFileNames(String dir, String extension) {
File file = new File(dir);
if (file.isDirectory()) {
String names[] = file.list();
// procedure d'elimination des fichiers non concernés
String[] names_ok= {};
for(int i=0; i<names.length;i++) {
String[] m1 = match(names[i], extension);
if (m1 != null) {
names_ok=append(names_ok,dossier+"/"+names[i]);
}
}
return names_ok;
}
else {
// If it's not a directory
println("le nom fourni n'est pas celui d'un dossier");
return null;
}
}
}Utiliser la classe
La classe s’utilise de manière traditionnelle : on crée un objet et on appelle le constructeur. On doit spécifier le nom du dossier (à partir de la racine du dossier du sketch) et les extensions désirées, séparées par des pipes ( | ). On obtient une liste directement utilisable dans une boucle.
import java.io.File; // necessaire seulement depuis la version 2b07 !
String dossier_source="database"; // nom du dossier
list_directory liste;
void setup(){
size(600,600);
liste = new list_directory(dossier_source, "jpg|png|gif");
}
void draw(){
background(0);
for (int i=0;i<liste.nb_items;i++) {
text(liste.fichiers[i],10,20+(i*20));
}
}