Dans cette fiche...

<Retour>

Description de l'applet

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.

Votre navigateur n'est pas compatible Java !

Listing de l'applet

// --------------------------------------------------
// 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);
	}
}

Le listing en détail...

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.

Intégration de l'applet dans la page

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.