Dans cette fiche... |
Difficulté : ![]() ![]() |
Résultat |
Une applet peut lire un fichier
situé sur son serveur. Voici un exemple dérivé de LireFichier, avec quelques
optimisations.
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. |
// -------------------------------------------------- // LECTURE DE FICHIERS EN JAVA // Version 'optimisée' // --------------------------------------------------
import java.applet.*; import java.awt.*; import java.net.*; import java.io.*;
public class LireFichier2 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; 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 dis = new DataInputStream(u.openStream());
// Lire le fichier jusqu'à la fin i = 0; while ((ligne = dis.readLine())!= null) tablo[i++] = ligne; } 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.
dis = new DataInputStream(u.openStream()); |
Par rapport à la fiche précédente, on crée directement le
DataInputStream.
Pour augmenter la vitesse de lecture, on pourrait compléter la ligne en utilisant un BufferedInputStream. La ligne ci-dessus deviendrait alors : dis = new DataInputStream(new BufferedInputStream(u.openStream())); |
while ((ligne = dis.readLine())!= null) |
La boucle a été raccourcie (mais la lecture n'est pas forcément plus simple !) : on fait la lecture de ligne et la comparaison à null en une seule ligne. Attention aux parenthèses ! |
tablo[i++] = ligne; |
Le stockage de la ligne lue dans le tableau se fait en une
seule étape. Ce qui équivaut à : tablo[i] = ligne; i++; A noter que l'incrémentation de la variable i se fait une fois que la ligne complète a été traitée. |
Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :
<applet code="LireFichier2.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.