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

Entrée/Sortie Java Discussion :

Filtre de lecture ou d'écriture


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut Filtre de lecture ou d'écriture
    mon code
    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
    24
    25
    26
    27
    28
    public void lecture_fichier(int num_ligne){
    		String ligne;
    		if(fichier.exists()==true){
    			try{
    				FileReader fr1 = new FileReader(fichier);
    				BufferedReader br1 = new BufferedReader(fr1);
    				while((ligne = br1.readLine()) != null){ //boucle qui lit ligne par ligne
    					jta1.setText(jta1.getText()+"\n"+ligne);
    				}
    				br1.close();
    			}catch(IOException e){
    				System.out.println("Erreur de lecture : "+e.getMessage());			
    			}
    		}else{
    			ecriture_fichier();
    		}
    	}
     
    	public void ecriture_fichier(){
    		try{
    			FileWriter fw1 = new FileWriter(fichier);
    			BufferedWriter bw1 = new BufferedWriter(fw1);
    			bw1.write(jta1.getText());
    			bw1.close();
    		}catch(IOException e){
    			System.out.println("Erreur d'écriture : "+e.getMessage());
    		}
    	}
    Le problème est que mon JTextArea jta1 a la propriété setText() vide lors de sa construction alors lorsque l'application enregistre le texte modifié dans le fichier elle ajoute à chaque fois une ligne blanche en début de texte.
    Vous me direz une ligne c'est rien ! Certes, mais si j'exécute le code 10 fois ça fait 10 lignes !
    J'aurais voulu trouver un moyen de filtrer cette ligne à l'écriture ou encore mieux à la lecture comme ça c'est plus joli et aussi efficace.

    J'ai tenté de disposer un tel filtre dans la boucle while avec une condition mais ça n'a rien donné.

    Tymk

    Tymk

  2. #2
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2003
    Messages : 17
    Par défaut
    Juste un truc,

    Pourquoi n'utilises-tu pas la méthode append(String text) de JTextArea au lieux de :

    jta1.setText(jta1.getText()+"\n"+ligne);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Ben ça va pas à ligne.

    Tymk

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Et :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jta1.append("\n"+ligne)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    En utilisant ce code le problème reste le même qu'avec l'ancien il me rajoute une ligneau début à chaque exécution.

    Néanmoins une modification toute bête m'apporte plus de résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jta1.append(ligne+"\n");
    Je me demande pourquoi je n'y est pas pensé avant.

    Il reste tout de même une ligne vide à la fin du texte mais comme elle ne s'ajoute pas à chaque exécution c'est moins grave. Mais c'est moche !

    Quelqu'un a une solution ?

    Tymk

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Par défaut
    hello,
    tu peux faire peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int caretPosition = jTextArea.getText().length();
    if (caretPosition != 0){
       jTextArea.append("\n");
    }
    jTextArea.append(msg);
    Apres si ton jTextArea est dans une scroll bar, tu peux rajouter (c'est pour position ta scrollbar a la fin. Pour moi c'est utilise, car les messages s'additionne au fur et a mesure de mon appli):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int endPosition = caretPosition - msg.length();
    jTextArea.setCaretPosition(endPosition);
    Voili voilou...j'espere que ca va t'aider...

    Delphine

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Je le sens bien ce code.

    Merci

    Tymk

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Je le sens bien ce code.

    Merci

    Tymk

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouvrir un fichier en lecture et en écriture
    Par Baubeau Cédric dans le forum Débuter
    Réponses: 2
    Dernier message: 06/12/2009, 23h25
  2. Réponses: 3
    Dernier message: 30/06/2009, 15h45
  3. Réponses: 16
    Dernier message: 01/06/2007, 09h30
  4. Soit la lecture, soit l'écriture,.. pas les deux!
    Par kenny49 dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2007, 00h48
  5. [XSLT]Problèmes d'ordre de lecture et d'écriture
    Par leup dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/07/2005, 10h36

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