====== Comment lire un fichier .txt ou .csv ligne par ligne pour en extraire des données numériques? ====== 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 de données numérique ===== Considérons un certain nombre de points M(x,y,z) dans l'espace modélisés par le type //PVector// sous Processing. Plutôt que de définir tous ces points dans le corps du programme, il est plus élégant de placer les coordonnées de chaque points dans un fichier nommé points.txt ou points.cvs, puis de lire récursivement les coordonnées de chaque points à 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 ===== __**sous un tableur (Excel ou libreOffice) : **__ 1) Entrer les valeur des coordonnées en 3 colonnes (pour x, y et z): {{:wiki:tutoriels:processing:tableur.jpg?400|}} 2) Enregistrer le fichier en ".csv". On donne par exemple le nom "points.csv" au fichier précédant. On obtient le fichier suivant: -700;200;2800; -600;200;2800; -500;200;2800; -400;200;2800; -300;200;2800; -200;200;2800; -600;0;2800; -500;0;2800; -400;0;2800; -300;0;2800; -200;0;2800; -100;0;2800; 3) Enregistrer le fichier points.csv 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.jpg?1000|}} String[] contenu_file; // tableau contanent les différentes ligne du fichier à lire PVector[] hotPoints; // tableau de PVector contenant les coordonnées des points en 3D nommés "hotPoints" void setup() { // lecture de toutes les lignes du fichier et enregistrement des ces lignes dans le tableau "contenu_file" contenu_file = loadStrings("Vecteurs_Hot_Points.csv"); // création du tableu de PVector de la même taille que le tableau "contenu_file" contenant les données à traiter hotPoints = new PVector[contenu_file.length]; // pour tous les éléments du tableau, faire... for (int i=0;i __**ATTENTION:**__ Lorsque vous enregistrez le fichier .cvs, il convient de bien vérifier la nature du séparateur. Ici, le séparateur dans le fichier "Vecteurs_Hot_Points.csv" est un point virgule. Par conséquent le séparateur ";" doit être passé en deuxième paramètre de la méthode "split()". Vous n'avez plus qu'à utiliser le tableau de PVector "hotPoints" dans la boucle draw() comme bon vous semble !!