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

cs_kayfi Messages postés 3 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 19 janvier 2010 - 19 janv. 2010 à 00:17
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 19 janv. 2010 à 14:38
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 §§§!!!!!!

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 janv. 2010 à 07:44
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
0
cs_kayfi Messages postés 3 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 19 janvier 2010
19 janv. 2010 à 11:38
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);}
}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 janv. 2010 à 11:48
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
0
cs_kayfi Messages postés 3 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 19 janvier 2010
19 janv. 2010 à 13:52
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");

}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 janv. 2010 à 14:38
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
0
Rejoignez-nous