Dans cette fiche...

<Retour>

Description de l'applet

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.

Votre navigateur n'est pas compatible Java !

Le fichier texte à lire s'appelle mois.txt, et se présente ainsi :

Janvier
Février
Mars
Avril
...
Décembre

Listing de l'applet

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

Le listing en détail...

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 :
  • Le package java.net fournit entre autres l'objet URL, qui servira à pointer le fichier lu.
  • Le package java.io donne accès aux InputStreams (voir plus bas), qui serviront à lire le fichier proprement dit.
 
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 !
Pour ne pas compliquer cette fiche, nous traitons ici les exceptions de la façon la plus simple qui soit : en les englobant d'un bloc try/catch minimum.

 
// 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.
Tant que cette ligne est différente de null, nous n'avons pas atteint la fin du fichier.

A chaque boucle, nous exécutons 3 commandes :
1) Stocker la ligne lue dans le tableau qui s'appelle judicieusement tablo !
2) Lire la ligne suivante (à nouveau par la méthode readLine()).
3) Augmenter la valeur de i, pour préparer le stockage de la prochaine ligne de tableau;

Il ne reste plus qu'à afficher le tout, dans la méthode paint() de l'applet.

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="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.