Comment lire un fichier .txt ou .csv ligne par ligne pour en extraire des données textuelles?

Par Damien MUTI

Description

Dans le programme suivant, nous allons montrer comment extraire des données d'un fichier .txt ou .cvs pour les utiliser dans un sketch.

Présentation du problème: Lecture des noms d'images/son ect.

Considérons que nous ayons à charger plusieurs images dans un sketch.

Plutôt que de charger une par une ces images dans le corps du programme, il est plus élégant de placer les le nom de chaque image dans un fichier nommé images.txt ou images.cvs, puis de lire récursivement le nom de chaque à l'aide de méthodes bien choisies:

loadStrings() : Lien externe

loadTable() : Lien externe

createReader() associé à la classe BufferedReader : Lien externe

(voir les références de Processing)

Création du fichier .txt ou .csv contenant les données

Dans un fichier images.txt:

1) Écrire ligne après ligne le nom de chaque image:

2) Enregistrer le fichier en “.txt”. On donne par exemple le nom “images.txt” au fichier précédant. On obtient le fichier suivant:

fissure.png
gris1.png
gris2.png
gris3.png
mont1.png
mont2.png
mont3.png
tunnel.png

3) Enregistrer le fichier images.txt dans le dossier “Data” de votre sketch Processing.

Sketch Processing permettant la lecture des données

Dans l'IDE de Processing taper le programme suivant:

// Déclaration d'un TABLEAU dynamique "ArrayList" d' IMAGES
ArrayList <PImage> images;
// tableau contanent les différentes ligne du fichier à lire
String[] contenu_file_images;
void setup() {
// CREATION DE LA LISTE (Arraylist) D'IMAGES initialement vide
images = new ArrayList<PImage>();
// tableau contanent les différentes ligne du fichier à lire
// lecture de toutes les lignes du fichier et enregistrement des ces lignes dans le tableau "contenu_file_position"
String[] contenu_file_images = loadStrings("images.txt");
// REMPLISSAGE DE LA LISTE d'images dans l'ordre:
// pour tous les éléments du tableau, faire...
for (String s :contenu_file_images){
// remplir le tableau "images" avec les fichiers son
images.add(loadImage(s));
}
println(images);
println(contenu_file_images);
}
void draw() {
}

Vous n'avez plus qu'à utiliser le tableau de PImages “images” dans la boucle draw() comme bon vous semble !!