Copie d'un tableau de string dans un fichier texte depuis une interface graphiqu

Signaler
Messages postés
3
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
19 janvier 2010
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonsoir à tous.J'ai réalisé une interface graphique avec swt avec un bouton qui doit normalement sauvegarder un tableau de String dans un fichier texte.Lorsque l'on fait un clic sur le bouton, celui ci va appeler une méthode void sauvegarderDansFichier(String diag,String nomfichier);
J'ai d'abord isolé cette méthode dans une classe de test et j'ai obtenu le résultat escompté, c'est à dire j'ai vu tous mes String ecrits dans le fichier ligne par ligne.Par contre lorque cette même méthode est appelée est appelée par le bouton de l'interface graphique, elle n'affiche correctement dans le fichier que le premier String.Pour les autres j'obtiens que des chaines de zéros.
Si quelqu'un peut me fournir un début d'explications §§§!!!!!!
A voir également:

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Salut,

C'est sûrement que tu lui dis d'écrire des 0, mais sans connaître ton code, on pourra pas t'en dire plus !

J'ai une voiture qui démarre pas, ca vient d'où ?

______________________________________
DarK Sidious
Messages postés
3
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
19 janvier 2010

Bonjour Dark Sidious, voila la méthode qui permet de sauvergarder le tableau de String dans le fichier et ça marche mais ne réagit pas aux événement de mon interface graphique


public static void sauverDansFichier(String[] diag,String filename){
String outFile = filename;
try{
FileWriter fw = new FileWriter(outFile);
PrintWriter out = new PrintWriter(fw);

for(int i=0;i<diag.length;i++){
out.println(diag[i]);

}
out.close();
}catch(IOException e){System.out.println(e);}
}
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Salut,

Ok, déjà, il te manque un flush à la fin, et de fermer ton writer dans un bloc finaly et surtout pas dans le bloc try !!!
public static void sauverDansFichier(String[] diag,String filename){ 
try{ 
  BufferedWriter out = new BufferedWriter(new PrintWriter(new FileWriter(filename))); 

  for(int i=0;i<diag.length;i++){ 
    out.println(diag[i]); 
  } 
  out.flush();
}  catch(IOException e){
  System.out.println(e);
} finaly {
  out.close();
}


Si ca ne règle pas ton problème, montre moi aussi le code d'appel de cette méthode (enregistrement du listener et déclaration du listener).
______________________________________
DarK Sidious
Messages postés
3
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
19 janvier 2010

Merci Dark pour cette contribution, j'ai essayé votre code mai le même problème persiste.
Au lieu d'avoir ceci:

1001010011101010010
0100101000001010111
0010111010110010110
...String binaire..
...................
01010100010111010011
j'obtiens seulement :

1001010011101010010
0000000000000000000
0000000000000000000
..String de 0......
...................
0000000000000000000

Donc la première ligne est effectivement écrite dans le fichier et il y'a 10 lignes comme c'est bien spécifié dans la méthode itererConf2(text11.getText(), 10)(voir code ci-dessous).
deuxième paramètre, mais c'est les zéros qui me dérangent.Et comme je vous l'ai dit plus haut, si j'isole le contenu de ce handleEvent dans une methode main alors j'ai le résultat attendu.

Voici mon code d'appel
buttons.addListener(SWT.Selection, new Listener(){
public void handleEvent(Event e){
int rayon=Integer.parseInt(txtvois1.getText());
Voisinage vois =new Voisinage(rayon);
Regle r =new Regle(vois);
AutomateCellulaire ac = new AutomateCellulaire(r,text11.getText());
String []diag=ac.itererConf2(text11.getText(), 10);
Utils.sauverDansFichier(diag, "C://test.txt");

}
}
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
116
Salut,

Ok, ton code d'écrire a l'air correct. Donc maintenant, faut voir ce que te renvoie la fonction itererConf2 de ta classe AutomateCellulaire : mets un point d'arrêt à ce niveau, et regarde le contenu de la variable diag : à tout le coup, seule la première ligne est remplie et les autres ne contiennent que des 0...
______________________________________
DarK Sidious