IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Charger contenu du fichier dans une textArea?


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut Charger contenu du fichier dans une textArea?
    Salut tous!

    j'aimerais charger le contenu d'un fichier dans une textArea.
    quelle fonction utilisée ?
    et comment faire ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    1) tu lit le fichier (y a tout ce qu'il te faut dans les api java.io pour ça et dans les Reader)
    2) tu met le contenu que tu viens de lire, via setText() dans le textArea.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    voilà ce que j'ai fait
    mais rien ne s'affiche dans le textArea
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		  try
    		  { fis = new FileInputStream("chemin du fichier à lire");
    		     int n; 
    		     while ((n = fis.available())> 0) 
    		     { byte[] b = new byte[n];s
    		        int result = fis.read(b)
    		        if (result == -1) break;
    		        String s = new String(b);
    		        textArea1.setText(s);
    		     }
    		  } catch (Exception err) {;}
    	  }}

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Commence par utiliser un Reader et un BufferedReader plutot que le fileinputstream. Cela te permettra de lire ton fichier ligne par ligne et non pas byte par byte. Ensuite, ton code remplace à chaque boucle le contenu du textArea par les quelques bytes que tu viens de lire. Enfin, available peut être à 0 sans avoir lu tout le fichier. En effet, cela retourne combien de byte peuent être lu sans bloquer l'appel. Souvent cette valeur est à 0 pour signifier que la prochaine lecture attendra que le disque dur lise les données.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    même avec ce code ça n'a pas marché
    les lignes s'affichent juste sur le console d'eclipse mais pas dans la zone JtextArea
    plz help!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    FileReader flux= null;
    		 BufferedReader input= null;
    		 String str;
    		       try{  
    		           flux= new FileReader ("Emplacement du fichier");
     
    		          input= new BufferedReader( flux);
     
    		        System.out.println("jmen sors comme un grand !");
     
    		        while((str=input.readLine())!=null)
    		        {
    		          textArea1.setText(str);
    		          }
    		         }catch (IOException e)
    		         {
    		             System.out.println("Impossible d'ouvrir le fichier : " +e.toString());
    		         }
    		      finally{
    		            try {
    		                flux.close();
    		            } catch (IOException ex) {;}
    		            }

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while((str=input.readLine())!=null)
    		        {
    		          textArea1.setText(str);
    		          }
    		         }catch (IOException e)
    		         {
    		             System.out.println("Impossible d'ouvrir le fichier : " +e.toString());
    		         }
    Avec ce code, tu lis chaque ligne. Ensuite, tu met cette ligne dans le textarea1, en remplacement de la ligne précédente. autrement dit

    => Ton textarea ne contiendra jamais qu'une seule ligne
    => Si la dernière ligne que tu lit est vide, ce qui est souvent le cas, ton textare sera vide.

    Il faut que tu concatène toutes les lignes que tu lis, par exemple en utilisant un StringBuilder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		        StringBuilder builder = new StringBuilder();
    		        while((str=input.readLine())!=null)
    		        {
     
    		          builder.append(str).append("\n");
    		          }
    		        textArea1.setText(builder.toString());

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    ce dernier code déclenche l'exception "java.lang.NullPointerException"
    en faisant tourner le code en mode debug le pointeur a pointé sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textArea1.setText(builder.toString());

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    étant donné qu'avec ce code, builder ne peut pas être null, il ne reste que textarea1 qui serait null. Tu as du oublier de l'initialiser quelque part.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    le problème persiste!!!!
    voici l'intégralité du code
    import java.awt.EventQueue;


    public class tpjava extends JFrame implements ActionListener{

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    JButton bouton1;
    JTextArea textArea1;
    private BufferedReader buff;

    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    tpjava frame = new tpjava();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    });
    }


    /**
    * Create the frame.
    */
    public tpjava() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 660, 478);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);



    JFileChooser fileChooser = new JFileChooser();

    JButton bouton1 = new JButton("Acheter");
    bouton1.addActionListener(this);

    JButton bouton2 = new JButton("Afficher");
    bouton2.addActionListener(this);

    JButton bouton3 = new JButton("Sauvegarder");
    bouton3.addActionListener(this);

    JButton bouton4 = new JButton("Fichier1");
    bouton4.addActionListener(this);

    JButton bouton5 = new JButton("Fichier2");
    bouton5.addActionListener(this);

    JButton bouton6 = new JButton("Fichier3");
    bouton6.addActionListener(this);

    JTextArea textArea1 = new JTextArea();


    JTextArea textArea2 = new JTextArea();


    GroupLayout gl_contentPane = new GroupLayout(contentPane);
    gl_contentPane.setHorizontalGroup(
    gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addGroup(gl_contentPane.createSequentialGroup()
    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addGroup(gl_contentPane.createSequentialGroup()
    .addComponent(fileChooser, GroupLayout.PREFERRED_SIZE, 494, GroupLayout.PREFERRED_SIZE)
    .addGap(18)
    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addComponent(bouton4, GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)
    .addComponent(bouton5, GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)
    .addComponent(bouton6, GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)))
    .addGroup(gl_contentPane.createSequentialGroup()
    .addContainerGap()
    .addComponent(textArea1, GroupLayout.PREFERRED_SIZE, 248, GroupLayout.PREFERRED_SIZE)
    .addPreferredGap(ComponentPlacement.UNRELATED)
    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addComponent(bouton3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    .addComponent(bouton2, GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
    .addComponent(bouton1, GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE))
    .addPreferredGap(ComponentPlacement.RELATED)
    .addComponent(textArea2, GroupLayout.DEFAULT_SIZE, 255, Short.MAX_VALUE)))
    .addContainerGap())
    );
    gl_contentPane.setVerticalGroup(
    gl_contentPane.createParallelGroup(Alignment.TRAILING)
    .addGroup(gl_contentPane.createSequentialGroup()
    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
    .addContainerGap()
    .addComponent(bouton1)
    .addPreferredGap(ComponentPlacement.RELATED)
    .addComponent(bouton2)
    .addPreferredGap(ComponentPlacement.RELATED)
    .addComponent(bouton3))
    .addComponent(textArea1, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE)
    .addComponent(textArea2, GroupLayout.DEFAULT_SIZE, 172, Short.MAX_VALUE))
    .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
    .addGroup(gl_contentPane.createSequentialGroup()
    .addGap(20)
    .addComponent(fileChooser, GroupLayout.PREFERRED_SIZE, 238, GroupLayout.PREFERRED_SIZE))
    .addGroup(gl_contentPane.createSequentialGroup()
    .addGap(56)
    .addComponent(bouton4)
    .addPreferredGap(ComponentPlacement.UNRELATED)
    .addComponent(bouton5)
    .addPreferredGap(ComponentPlacement.UNRELATED)
    .addComponent(bouton6))))
    );
    contentPane.setLayout(gl_contentPane);
    }


    public void actionPerformed(ActionEvent e) {

    System.out.println("Clic sur le bouton : " + e.getActionCommand());
    if (e.getActionCommand().equals(bouton1)){
    String str;
    InputStream flux = null;
    try {
    flux = new FileInputStream("C:\\Users\\NouNours\\Workspace\\TP\\src\\Personne.txt");
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    InputStreamReader lecture=new InputStreamReader(flux);
    buff = new BufferedReader(lecture);
    StringBuilder builder = new StringBuilder();
    try {
    while((str=buff.readLine())!=null)
    {
    builder.append(str).append("\n");
    }
    } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    textArea1.setText(builder.toString());
    }

    }
    }

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu as deux variables appelées textArea1 dans ton code: celle qui est déclarée tout en haut comme champ de classe et à laquelle tu n'attribue rien, et celle que tu déclare localement dans le constructeur tpjava qui ne sort jamais de ce constructeur. Et quand tu essaie plus loin de mettre du texte, c'est forcément dans la variable pointée par le champ de classe, qui n'a jamais été initialisée. D'où ton exception.

Discussions similaires

  1. [forms 6i] charger un fichier dans une table avec sqlloader
    Par moneyinthebank dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 29/04/2006, 01h15
  2. [VB6]Lire le contenu d'un fichier dans une listbox
    Par gizmorambo dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 11/04/2006, 12h51
  3. Charger un fichier dans une table
    Par luchot dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/02/2006, 17h21
  4. Charger un fichier dans une textarea
    Par boux2 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2006, 16h16
  5. Récupérer contenu de fichier dans une variable
    Par peppena dans le forum Linux
    Réponses: 4
    Dernier message: 15/06/2005, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo