Dans cette fiche... |
Difficulté : ![]() ![]() |
Résultat |
Une applet peut lire un fichier
situé sur son serveur. En voici un exemple.
Pour des raisons de compatibilité, la technique est orientée JDK 1.02. Lisez ceci pour plus de détails. D'autre part, cet exemple utilise aussi les tableaux. Lisez au moins la fiche Tableaux pour plus de détails. |
Le fichier texte à lire s'appelle mois.txt, et se présente ainsi :
Janvier Février Mars Avril ... Décembre
// -------------------------------------------------- // LECTURE DE FICHIERS EN JAVA // --------------------------------------------------
import java.applet.*; import java.awt.*; import java.net.*; import java.io.*;
public class LireFichier extends Applet { String NomFichier = "mois.txt"; String tablo[] = new String[12];
// Méthode appelée à l'initialisation de l'applet public void init() { URL u; InputStream is; DataInputStream dis; String ligne; int i;
// Définir la couleur de fond de l'applet setBackground(Color.black);
try { // Définir l'URL pointant sur le fichier u = new URL(getDocumentBase(), NomFichier);
// Lire le flux d'entrée (InputStream) lié au fichier is = u.openStream();
// En faire un flux de données (DataInputStream) dis = new DataInputStream(is);
// Lire le fichier jusqu'à la fin ligne = dis.readLine(); i = 0; while (ligne != null) { tablo[i] = ligne; ligne = dis.readLine(); i++; } } catch(Exception e) {} }
// Affichage public void paint(Graphics g) { int i;
// Couleur du texte g.setColor(Color.white);
// Afficher les 12 mois (de 0 à 11) for(i = 0; i < 12; i++) g.drawString(tablo[i], 10, 10+i*10); } }
Les lignes non commentées ont déjà été traitées dans les exemples précédents.
import java.net.*; import java.io.*; |
On importe 2 packages particuliers, pour pouvoir utiliser
certains objets spécifiques :
|
String NomFichier = "mois.txt"; String tablo[] = new String[12]; |
La première variable sert à stocker le nom du fichier. Le
fichier s'appelle ici mois.txt, et il est placé au même
endroit que la page HTML qui contient l'applet. L'autre variable est un tableau , qui servira à stocker les 12 mois lus dans le fichier. |
URL u; InputStream is; DataInputStream dis; String ligne; int i; |
Plusieurs variables utiles : u servira à donner l'URL du fichier, donc son adresse sur le réseau. is est un InputStream (un flux d'entrée). C'est cet objet qui permet la lecture dans le fichier. dis est un DataInputStream, une variante de InputStream, qui permet la lecture ligne par ligne dans le fichier. ligne contiendra chaque ligne lue par DataInputStream. i est un indice qui servira à compter les lignes, et à remplir le tableau tablo. |
try { } catch(Exception e) {} |
La création de l'URL et la lecture du fichiers peuvent
provoquer un certain nombre d'erreurs. En Java, une erreur provoque généralement l'apparition d'une exception. Il faudrait normalement gérer les exceptions produites, mais ceci fera
l'objet d'une autre fiche pratique ! |
// Définir l'URL pointant sur le fichier u = new URL(getDocumentBase(), NomFichier); |
On crée un objet URL, qui contient l'adresse du fichier sur
le serveur. L'adresse est calculée par rapport à celle de la page HTML qui
contient l'applet. Ceci est très proche du chargement des images en Java. |
// Lire le flux d'entrée (InputStream) lié au fichier is = u.openStream(); // En faire un flux de données (DataInputStream) dis = new DataInputStream(is); |
2 des lignes les plus importantes de ce listing : u
représentant l'URL du fichier, on peut maintenant ouvrir un flux d'entrée
(objet InputStream), grâce à la méthode openStream().
Ensuite, pour pouvoir lire ce flux d'entrée ligne par ligne, on en fait un autre objet, un DataInputStream. |
// Lire le fichier jusqu'à la fin ligne = dis.readLine(); i = 0; while (ligne != null) { tablo[i] = ligne; ligne = dis.readLine(); i++; } |
Vient ensuite la lecture du fichier, volontairement
détaillée. Consultez éventuellement la notion de boucle pour plus
de détails.
On lit une ligne à la fois, grâce à la méthode readLine(),
fournie par l'objet DataInputStream dis. A chaque boucle, nous exécutons 3 commandes : Il ne reste plus qu'à afficher le tout, dans la méthode paint() de l'applet. |
Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :
<applet code="LireFichier.class" width=250 height=90> Votre navigateur n'est pas compatible Java ! </applet>
Pour plus de précisions sur l'intégration d'une applet, cliquez ici.