Lire fichier via une applet

Description

Exemple simple d'une applet pour lire un fichier sur le disque via une URL grave à getCodeBase
utilisation textare,

Source / Exemple :


package affichefichier;
import java.awt.*;
import java.io.*;
import java.lang.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.applet.*;

import java.io.InputStream ;
import java.io.DataInputStream ;
import java.net.URL ;

public class AfficheFichier extends java.applet.Applet {
  boolean isStandalone = false;
  JPanel jPanel1 = new JPanel();
  JTextArea jTextArea1 = new JTextArea();
  JButton jButton1 = new JButton();
  JLabel jLabel1 = new JLabel();
  JTextField jTextNomFichier = new JTextField();
  JLabel jLabel2 = new JLabel();
  private String message;

 class LireFichier
 {
  private DataInputStream lecteur;
  private String LigneLue;
  private String FileName;

    // Constructeur classe LireFichier-initialisation= ouverture fichier
  LireFichier( String NomFichier) throws IOException {
           FileName = NomFichier;
	   try{
//	       lecteur = new DataInputStream( new FileInputStream(FileName) );
//          ---> cela génère une erreur type sécurité...
                lecteur = new DataInputStream( (new URL( getCodeBase(), FileName )).openStream() ) ;
	     }
	   catch (IOException exc){
	       System.out.println(" probleme ouverture avec le fichier " + FileName);
	   }
  }

  String lire() throws IOException {
    System.out.println("Lecture du fichier "+ FileName );
    LigneLue = lecteur.readLine();
    return LigneLue ;
    }

  void Fermer() throws IOException {
      lecteur.close(); }

 }

  /**Construct the applet*/
  public AfficheFichier() {
  }
  /**Initialize the applet*/
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**Component initialization*/
  private void jbInit() throws Exception {
    this.setLayout(null);
    jPanel1.setLayout(null);
    jButton1.setText("Lecture du fichier...");
    jButton1.setBounds(new Rectangle(17, 210, 134, 23));
    jButton1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jButton1_actionPerformed(e);
      }
    });
    jLabel1.setText("  Nom fichier : ");
    jLabel1.setBounds(new Rectangle(0, 172, 83, 30));
    jTextNomFichier.setText("test.txt");
    jTextNomFichier.setBounds(new Rectangle(78, 175, 138, 22));
    jLabel2.setForeground(Color.red);
    jLabel2.setText("...");
    jLabel2.setBounds(new Rectangle(9, 409, 398, 17));
    jPanel1.setMinimumSize(new Dimension(400, 500));
    jPanel1.setPreferredSize(new Dimension(400, 500));
    jPanel1.setBounds(new Rectangle(18, 6, 481, 426));
    jTextArea1.setBounds(new Rectangle(6, 5, 237, 155));
    this.add(jPanel1, null);
    jPanel1.add(jTextArea1, null);
    jPanel1.add(jLabel2, null);
    jPanel1.add(jButton1, null);
    jPanel1.add(jLabel1, null);
    jPanel1.add(jTextNomFichier, null);
  }
  /**Start the applet*/
  public void start() {}

  /**Stop the applet*/
  public void stop() {
  }
  /**Destroy the applet*/
  public void destroy() {
  }
  /**Get Applet information*/
  public String getAppletInfo() {
    return "Applet Information";
  }
  /**Get parameter info*/
  public String[][] getParameterInfo() {
    return null;
  }
  /**Main method*/
  public static void main(String[] args) {
    AfficheFichier applet = new AfficheFichier();
    applet.isStandalone = true;
    Frame frame;
    frame = new Frame() {
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }
      public synchronized void setTitle(String title) {
        super.setTitle(title);
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      }
    };
    frame.setTitle("test Applet");
    frame.add(applet, BorderLayout.CENTER);
    applet.init();
    applet.start();
    frame.setSize(400,500);
    frame.setVisible(true);
  }

  public void jButton1_actionPerformed(ActionEvent e) {
              //On charge le contenu d'un fichier
              try{
                  jLabel2.setText("Lecture du fichier en cours, veuillez patienter....");
                  rafraichir();
                  actionLire();
                  }
                  catch(IOException exc){ jLabel2.setText("...problème avec lecture fichier...");}
              }

  public void actionLire() throws IOException {
      int index = 0;
      LireFichier lecture = new LireFichier(jTextNomFichier.getText());
      jTextArea1.setText("");
      while (( message = lecture.lire())!= null){
                    index++;
                    jTextArea1.append(message+ "\n" );
                    }
      lecture.Fermer();
      rafraichir();}

  public void afficherErrIO(){
      jLabel2.setText("probleme utilisation IO");
      rafraichir();}

  public void rafraichir(){
        this.repaint();
        this.show();  }

}

Conclusion :


Ici, il faudra ranger le HTML qui appelera AppelleFichier via le code exemple ci-joint :

<html>
<head>
<title>
HTML Test Page
</title>
</head>
<body>
Affichage de l' application lecture d'un fichier à partir d'une applet.<br>
<applet
codebase = "."
code = "affichefichier.AfficheFichier.class"
name = "TestApplet"
width = "600"
height = "500"
hspace = "0"
vspace = "0"
align = "top"
>
</applet>
</body>
</html>

Il faudra avoir un fichier test.txt avec du blabla ASCII dedans, exemple....

Coucou, ceci est un test
maintenant on a la ligne2
la ligne 3
la ligne 5, euh, non 4
oui, c' est la 5

-----------fin du fichier exemple ............

L' exemple a été fait sous JBuilder5, le source zip comporte le fichier projet jpx

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.