Chargement d’un fichier texte

Processing peut charger un texte très simplement. Mais il faut juste être au fait de ce qu’est un array, en français "variable tableau".

Précédent | 14/15 | Suivant

Quel type de fichier charger ?

La fonction loadStrings() de Processing permet de charger un texte àpartir d’un fichier .txt. C’est la forme la plus basique d’un fichier texte : pas d’indication de police, pas d’image, pas de mise en page, de gras, d’italique, rien que des caractères de texte, des retours àla ligne.
Ne tentez pas de charger un fichier .rtf ou pire encore, un .doc ou un .pdf car ce sont des format de fichier plus complexes, qui contiennent du texte mais aussi des tas d’informations qui concernent la mise en page, les typos, des images, etc.
On peut exporter un fichier txt àpartir de word, de textEdit, d’openOffice et des autres logiciels de traitement de texte assez facilement.

LoadStrings() et sa variable tableau

Pour charger un texte, on écrira ceci :

String[] montexte=loadStrings("KarlMarx.txt");

Cette ligne de code va stocker dans la variable montexte le contenu du fichier KarlMarx.txt. Vous l’avez remarqué, il y a deux crochet après le type de variable String[]. Ça signifie àProcessing que la variable montexte est un tableau.

Une variable tableau (array en anglais) est une variable qui contient non pas un seul élément mais une liste d’éléments. On peut l’écrire comme ça :

String[] fruits={ "pomme","poire","ananas" };

Ensuite, on peut atteindre chacun des éléments de cette liste individuellement : le premier élément de la liste est l’élément 0, qu’on peut atteindre comme ceci :

text(fruits[0],100,100); // pomme
text(fruits[1],100,150); // poire
text(fruits[2],100,200); // ananas

C’est làque les brackets (c’est leur nom) trouvent leur raison d’être : il permettent d’accéder àchacun des éléments de la liste en spécifiant leur place dans celle-ci.

Dans le cas de notre fichier texte, chaque éléments de la variable montexte est une ligne de texte, c’est-à-dire tout ce qui est séparé par un retour àla ligne.

Du coup, on peut savoir combien de lignes se trouvent dans le fichier en utilisant la propriété length comme ceci :

String[] montexte=loadStrings("KarlMarx.txt");
println("nombre de lignes : "+montexte.length);

Dans mon cas, on obtient dans la console (en bas dans la fenetre de Processing) : "nombre de lignes : 5970".

Du coup, on peut demander le contenu de la première ligne comme ceci :

String[] montexte=loadStrings("KarlMarx.txt");
text(montexte[0],10,30); // afficher la première ligne

Afficher ligne par ligne

A partir de là, on peut on peut faire un script pour afficher ligne par ligne le contenu du fichier .txt

String[] montexte;
int compteur=0;

void setup() {
  size(800, 600);
  montexte=loadStrings("KarlMarx.txt");
  fill(0);
}

void draw() {
  background(255);
  text(montexte[compteur], 10, 30,700,500); // afficher la première ligne
  compteur++; // ajouter 1 à compteur
  if(compteur >= montexte.length){ // si on arrive à la fin 
    compteur=0; // recommencer au début
  }
  noLoop();
}

void keyPressed(){
  loop();
}

Assembler toutes les lignes en un seul grand texte

Dans certains cas, on veut pouvoir disposer d’un seul grand texte, pour l’analyser plus facilement ou pour le séparer en phrase (c’est àdire quelque chose qui se termine par un point, un point d’interrogation, etc.).
Dans ce cas, on va utiliser une fonction qui s’appelle join.
Join est une fonction qui reçoit une variable tableau de texte et les rassemble en un seul contenu de type String. Voici un exemple :

String texte_complet;

void setup() {
  size(800, 600);
  String[] montexte=loadStrings("KarlMarx.txt");
  texte_complet=join(montexte,", ");
  fill(0);
}

void draw() {
  background(255);
  text(texte_complet, 10, 30,700,500); // afficher la première ligne
  noLoop();
}

Découper le texte en plusieurs morceaux

Une fois le texte rassemblé, on peut le traiter avec différentes fonctions. Je vous renvoie àun tutoriel sur ce site qui parle spécifique de ça.