Probleme ecriture dans un fichier.
minaurore
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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!
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:
- Probleme ecriture dans un fichier.
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
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.
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.
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.
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 :
La confiance n'exclut pas le contrôle
À 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