====== 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()// : [[https://processing.org/reference/loadStrings_.html|Lien externe]] * //loadTable()// : [[https://processing.org/reference/loadTable_.html|Lien externe]] * // createReader()// associé à la classe //BufferedReader// : [[https://processing.org/reference/BufferedReader.html|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: {{ :wiki:tutoriels:processing:programme_1.3.jpg?1000|}} // Déclaration d'un TABLEAU dynamique "ArrayList" d' IMAGES ArrayList 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(); // 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 !!