Probleme ecriture dans un fichier.

Fermé
minaurore - 21 janv. 2013 à 13:25
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 21 janv. 2013 à 14:16
Bonjour,
j'ai un projet a rendre pour demain et j'ai encore un problème dans mon programme!
J'ecris dans un fichier texte à partir d'un arbre que j'ai créé. voici mon code:


private String test="test";

public void copierArbre(Noeud x) throws FileNotFoundException, IOException {

PrintWriter out = new PrintWriter(copieArbre);
out.print(test);
if (x.estUneFeuille()) {
out.print(x.toString());
System.out.println(x.toString()+" //"+x.getFrequence());
out.print(test+1);


} else{
out.print(0);

copierArbre(x.gauche);
out.print(test+2);

out.print(1);

copierArbre(x.droite);
out.print(test+3);

}
out.close();
}


Mais voila mon probleme, il ne m'ecrit que:
test0test21test3

pourtant quand j'affiche sur la console mon arbre avec System.out.println(x.toString()+" //"+x.getFrequence());
j'ai bien tout qui s'affiche. je ne comprend dés lors pas pourquoi il n'en fait pas de meme dans mon fichier!
A voir également:

3 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 janv. 2013 à 13:29
C'est très simple, avec ton fichier tu fais des print, alors qu'avec la console tu fais des println, donc remplaces tes print par des println et tu auras la même chose.
1
non pas du tout en system.out j'ai

a //9317
k //1092
B //262
Y //130
D //132
- //298
R //139
z //72
) //43
( //44
v //1189
' //1202
d //4893
c //2430
f //2497
w //2647
A //633
C //176
x //179
N //180
K //180
! //373
O //376
T //790
o //10842
t //11073
l //5598
, //3001
y //3074
. //3133
b //1568
F //201
j //101
q //108
; //442
I //854
p //1780
H //892
? //452
Q //112
] //112
[ //116
" //1
& //1
1 //6
J //9
: //32
V //33
U //36
m //4001

Mais sur papier je n'ai que
test
0test2
1
test3
suivant le print ou println

Mais il devrait me donner un fichier txt du genre
01a100f110z11110b ..... avec le print.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
21 janv. 2013 à 14:16
Effectivement, il y a un autre problème plus grave :

À chaque appel de ta méthode tu créés un nouveau fichier, ce qui signifie que tout est effacé à chaque fois quand tu rentres dans les appels récursifs. Il faudrait que tu initialises une seule fois le FileWriter, puis que tu le passes en argument pour toujours garder le même flux.

Exemple :

private void copierArbre(Noeud x, FileWriter out)
{
    out.print(test);
    
    if (x.estUneFeuille())
    {
        out.print(x.toString());
        System.out.println(x.toString()+" //"+x.getFrequence());
        out.print(test+1);
    }
    else
    {
        out.print(0);
        
        copierArbre(x.gauche,out);
        out.print(test+2);
        
        out.print(1);
        
        copierArbre(x.droite,out);
        out.print(test+3);
    }
}

public void copierArbre(Noeud x) throws FileNotFoundException, IOException
{
    PrintWriter out = new PrintWriter(copieArbre); 
    copierArbre(x,out);
    out.close(); 
}
--
La confiance n'exclut pas le contrôle
0