Lire un fichier dans une applet

     

alt : l'applet n'est pas visible par votre navigateur ; pour voir l'application, vous devez télécharger le code, le compiler et l'exécuter

Cette applet n'est pas bien impressionnante. Son travail est de lire les caractéristiques d'un rectangle dans un fichier et de tracer en consécence le rectangle.

Voici le programme.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.io.InputStream;
import java.net.URL;
import java.util.Scanner;

import javax.swing.BorderFactory;
import javax.swing.JApplet;
import javax.swing.JPanel;

@SuppressWarnings("serial")
class Interieur extends JPanel {
	int x, y, largeur, hauteur;

	Interieur(int x, int y, int largeur, int hauteur) {
		super();
		this.x = x;
		this.y = y;
		this.largeur = largeur;
		this.hauteur = hauteur;
		setBorder(BorderFactory.createLineBorder(Color.BLACK));
		setBackground(Color.YELLOW);
		setPreferredSize(new Dimension(2 * x + largeur, 2 * y + hauteur));
	}

	public void paintComponent(Graphics g) { 
		super.paintComponent(g);
		g.setColor(Color.RED);
		g.drawRect(x, y, largeur, hauteur);
	}
}

@SuppressWarnings("serial")
public class Carte extends JApplet { 
	String nomFichier = getParameter("fichier");
	public void init() {
		try {
		        URL url = Carte.class.getResource(nomFichier);
	                int x, y, largeur, hauteur;
		        InputStream data = url.openStream();

			/* ou bien 
			InputStream data = Carte.class.getResourceAsStream(nomFichier);
			*/

			Scanner lecteur = new Scanner(data);

			x = lecteur.nextInt();
			y = lecteur.nextInt();
			largeur = lecteur.nextInt();
			hauteur = lecteur.nextInt();

			setLayout(new FlowLayout(FlowLayout.CENTER));
			add(new Interieur(x, y, largeur, hauteur));
		}
		catch(Exception exc) {
			showStatus(exc.toString());
		}
	}
}

Le programme
Le fichier de données


getParameter("fichier") : la méthode getParameter(String) lit à partir de la page HTML de l'applet la valeur (une chaîne de caractères) associée à la chaîne de caractères passées en paramètre, et retourne celle-ci. Cela permet d'indiquer au programme le fichier de données.
getResource(nomFichier) : retourne l'URL du fichier à lire
monURL.openStream() : ouvre une connexion avec l'URl indiquée et retourne un flot de lecture (instance de InputStream) liée à cette connexion.

© Irène Charon, Télécom ParisTech 2011