2017-10-11 2 views
0

J'ai essayé de créer un compte bancaire simple en Java et je veux enregistrer le nom des utilisateurs entrés dans un document .txt. Le seul problème est que le nom est remplacé sur la première ligne du document texte chaque fois que je cours le code.Comment écrire sur une nouvelle ligne avec FileWriter en Java?

package bank.account; 
import java.util.Scanner; 
import java.io.*; 

public class ATM 
{ 
    public static void main(String[] args){ 


    Scanner sc = new Scanner(System.in); 
    BankAccount userAccount = new BankAccount(); 
    System.out.println("Please enter your name in order to make a new account:"); 


    String fileName = "name.txt"; 
    try { 
     FileWriter fileWriter = 
       new FileWriter(fileName); 
     BufferedWriter bufferedWriter = 
       new BufferedWriter(fileWriter); 

     String name = sc.nextLine(); 
     userAccount.setaccName(name); 
       bufferedWriter.write(userAccount.getaccName()); 
       bufferedWriter.close(); 

    } 
    catch(IOException ex) { 
      System.out.println(
       "Error writing to file '" 
       + fileName + "'"); 

     } 

    System.out.println("Please enter the amount you would like to deposit"); 
    double money = sc.nextDouble(); 
    userAccount.deposit(money); 
    System.out.println(userAccount.getaccBalance()); 
    System.out.println(userAccount.getaccName()+ " your balance is " + userAccount.getaccBalance()); 

    } 

} 
+1

Cette question a déjà une réponse ici: https://stackoverflow.com/questions/18549704/java-filewriter-create-a-new-line – deHaar

+0

FileWriter.write ("\ n"); ajoutez la nouvelle ligne à votre fichier. – Lokesh

+0

Mieux utiliser 'newLine()' de la classe 'BufferedWriter'. – dooxe

Répondre

2

Vous écrasez le contenu du fichier en raison de l'utilisation de new FileWriter(fileName); (lire la JavaDoc sur cette classe/constructeur). Utilisez new FileWriter(fileName, true); à et ajoutez au fichier à la place.

Notez également que vous devez ajouter un caractère de nouvelle ligne ("\n") avant le nom si le fichier n'est pas vide sinon vous obtiendrez tous les noms sur une ligne.

2

Ce code ouvrira ou créera un fichier et ajoutera le nouveau texte dans une nouvelle ligne.

PrintStream fileStream = new PrintStream(new File("a.txt")); 
fileStream.println(userAccount.getaccName()); 

vous pouvez également créer le FileWriter avec le PARAM « append = true » et le résultat sera simplement ajouté dans une nouvelle ligne.

// FileWriter(File file, boolean append) 
FileWriter fileWriter = 
       new FileWriter(filePathName, shouldAppend);