Probleme ecriture dans un fichier.

minaurore -  
KX Messages postés 19031 Statut Modérateur -
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 19031 Statut Modérateur 3 020
 
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
minaurore
 
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 19031 Statut Modérateur 3 020
 
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