Ecrire dans un fichier (avec un PrintWriter si possible) sans écraser le conten

cs_leadersolo Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 6 octobre 2010 - 29 sept. 2010 à 12:41
cs_leadersolo Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 6 octobre 2010 - 6 oct. 2010 à 17:09
bonjour tout le monde , j'ai implémenté un code qui permet d'interagir avec un fichier (afficher , ecrire...) sauf que à la fin quand je veux écrire dans le fichier en utilisant un PrintWriter, ça écrase ce qu'il contenait et j'arrive pas à résoudre ce problème (la méthode ecrire)

voici mon code
//Méthode qui compte le nombre de mots d'un fichier
public static int compter(File f) throws Exception{
int cpt=0;
Scanner input=new Scanner(f);
while(input.hasNext()){
input.next();
cpt++;
}
return cpt;
}

//Méthode qui crée un tableau à partir d'un fichier
public static String[] creer(File f) throws Exception{
String[] t= new String[compter(f)];
Scanner input=new Scanner(f);
for(int i=0;i<t.length;i++)
t[i]=input.next();
return t;
}

//Méthode qui affiche les éléments d'un tableau dans un fichier
public static void afficher(String[]t,File f) throws Exception{
PrintWriter output = new PrintWriter(f);
for(int i=0;i<t.length;i++)
output.print(t[i]+" ");
}

//Méthode qui retourne l'indice d'un mot dans un tableau s'il existe sinon -1
public static int localiser(String s,String[]t){
for(int i=0;i<t.length;i++)
if(t[i].equalsIgnoreCase(s)) return i;
return -1;
}

//Méthode qui recopie un tableau de String dans un autre
public static String[] recopier(String[]t){
String[] t1=new String[t.length];
for(int i=0;i<t1.length;i++)
t1[i]=t[i];
return t1;
}

//Méthode qui permet d'ecrire dans un fichier
public static void ecrire(File f) throws Exception{
PrintWriter x=new PrintWriter(f);
Scanner output=new Scanner(System.in);
String t=output.next();
x.print(creer(f)+"\n"+t);
x.close();
}

6 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
1 oct. 2010 à 11:12
Salut,

quand tu crées ton PrintWriter, au lieu de passer directement l'objet File, passe par un FileWriter. Il permet d'ajouter du texte à la fin du fichier.
0
cs_leadersolo Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 6 octobre 2010
2 oct. 2010 à 23:16
salut kirua12 ,
ça serait g entilde ta part d'illustrer ça par un code parceque j'arrive pas à obtenir le resultat ...
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 oct. 2010 à 14:21
ça donne ça :
PrintWriter x=new PrintWriter(new FileWriter(f,true));
0
cs_leadersolo Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 6 octobre 2010
6 oct. 2010 à 16:36
ça marche merci kirua .
Mais j'ai un autre souci : quan je saisis par exemple "bonjour ça va ?" il n'y a que le 1er mot "bonjour" qui s'ajoute au fichier les autres non.
est ce normal ?
0

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

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
6 oct. 2010 à 16:51
oui, c'est normal. Dans ta méthode écrire, tu ne fais pas de boucle.
Tu peux voir ça facilement avec le debugger...
0
cs_leadersolo Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 6 octobre 2010
6 oct. 2010 à 17:09
j'arrive tout pres des buts puis je m'egare
j'ai reussi à faire la boucle avec comme test d'arret le "."
mais il m'ecrit un mot et saute le suivant ainsi de suite


public static void ecrire(File f) throws Exception{
PrintWriter x=new PrintWriter(new FileWriter(f,true));
Scanner output=new Scanner(System.in);
while(output.next().equalsIgnoreCase(".")!=true)
x.print(" "+output.next());
x.close();
}
0
Rejoignez-nous