2010-11-24 4 views
2

J'essaie d'ajouter une ligne à un fichier texte avec Java. Quand je lance mon programme, je veux ajouter une ligne simple, mais mon programme supprime toutes les anciennes données dans le fichier texte avant d'écrire de nouvelles données.Comment ajouter un fichier texte au lieu de l'écraser en Java?

Voici le code:

FileWriter fw = null; 
    PrintWriter pw = null; 
    try { 
     fw = new FileWriter("output.txt"); 
     pw = new PrintWriter(fw); 

    pw.write("testing line \n"); 
     pw.close(); 
     fw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(FileAccessView.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

double: http://stackoverflow.com/questions/2738448/java-io-how-to-append-to-an- fichier texte existant-existant – Poindexter

+2

Appel de pw.close(), appelle fw.close(); –

Répondre

20

Modifier ceci:

fw = new FileWriter("output.txt"); 

à

fw = new FileWriter("output.txt", true); 

Voir la javadoc pour plus de détails pourquoi - efficacement les paramètres par défaut "ajouter" à false.

Notez que FileWriter est généralement pas une grande classe à utiliser - je préfère utiliser FileOutputStream enveloppé dans OutputStreamWriter, comme vous permet de spécifier le codage de caractères à utiliser, plutôt que d'utiliser votre défaut du système d'exploitation.

+0

Wow, posté le même temps à la seconde ... Je n'ai jamais vu cela se produire avant. : O – Powerlord

+0

merci beaucoup comment puis-je ajouter du texte à la nouvelle ligne – Afzaal

+0

yap je pensais qui dois-je accpet: D – Afzaal

6

Modifier ceci:

fw = new FileWriter("output.txt"); 

à ceci:

fw = new FileWriter("output.txt", true); 

Le second argument de FileWriter « s constructor est de savoir si vous voulez ajouter au fichier que vous ouvrez ou non. Cela provoque le déplacement du pointeur de fichier à la fin du fichier avant d'écrire.

1

Utilisez

fw = new FileWriter("output.txt", true); 

De JavaDoc:

construit un objet FileWriter donné un objet File. Si le deuxième argument est true, les octets seront écrits à à la fin du fichier plutôt que le début.

1

Deux options:

  1. La dure: lire le fichier entier, puis l'écrire ainsi que les nouvelles données.
  2. La façon facile: Ouvrez le fichier en mode "append": new FileWriter(path, true);
+0

Pourquoi devrais-je souffrir de la peine de le faire à la dure quand Sun m'a donné une option facile? (Ai-je dit Soleil?) :) –

+0

En général, vous ne le feriez pas. Un enseignant sadique pourrait vous faire faire les deux façons juste pour que vous appréciez "la manière facile" de plus.Cette question est assez simple pour qu'elle puisse être étiquetée "devoirs". Mais oui, étant donné l'option ... moyen facile à chaque fois. –

+0

Pour défendre M. Storer, il est bon de savoir à la dure s'il y a des différences fonctionnelles, car il peut y avoir des situations où la facilité est insuffisante. Comme dans ce cas, si vous avez besoin de savoir quelque chose sur le contenu du fichier avant de l'écrire, comme peut-être vous devez inclure un numéro de ligne ou un total. – Jay

Questions connexes