web-dev-qa-db-fra.com

Java écrasant un fichier de sortie existant

Mon programme utilise actuellement 

FileOutputStream output = new FileOutputStream("output", true);

Une boucle while crée le fichier de sortie s'il n'a pas encore été créé et ajoute des données à ce fichier pour chaque itération de la boucle while à l'aide de 

 output.write(data).  

C'est bien et c'est ce que je veux.

Si je lance à nouveau le programme, la taille du fichier est doublée car il ajoute les informations exactes à la fin du fichier. Ce n'est pas ce que je veux. Je voudrais écraser le fichier si je lance à nouveau le programme. 

8
john stamos

Cette documentation suggère que le paramètre que vous transmettez soit le paramètre append.

la signature ressemble à la suivante 

FileOutputStream(File file, boolean append)

Vous devez définir ce paramètre sur false puisque vous ne souhaitez pas ajouter.

FileOutputStream output = new FileOutputStream("output", false);
20
Sam I am

Je voudrais écraser le fichier si je lance à nouveau le programme. 

Passez false en tant que 2ème argument, pour définir append à false:

FileOutputStream output = new FileOutputStream("output", false);

Découvrez la documentation constructeur :

Si le deuxième argument est vrai, les octets seront alors écrits à la fin du fichier plutôt qu'au début.

13
Rohit Jain

Ou vous pouvez simplement supprimer le fichier s'il est là, puis le créer toujours et le travail effectué.

0
Tony Hopkinson