2017-10-11 98 views
0

我一直在嘗試在Java中創建一個簡單的銀行帳戶,並希望將輸入的用戶名保存到.txt文檔中。唯一的問題是每次運行代碼時,文本文檔的第一行都會替換該名稱。如何使用Java中的FileWriter寫入新行?

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

這個問題已經在這裏有一個答案: https://stackoverflow.com/questions/18549704/java-filewriter-create-a-new-line – deHaar

+0

FileWriter.write( 「\ n」);將新行添加到您的文件中。 – Lokesh

+0

更好地使用'BufferedWriter'類的'newLine()'。 – dooxe

回答

2

你覆蓋文件內容,由於使用的new FileWriter(fileName);(閱讀該類/構造的JavaDoc)。改爲使用new FileWriter(fileName, true);附加到文件中。

另請注意,如果文件不是空的,您需要在名稱前追加一個換行符("\n"),否則您將在一行中獲取所有名稱。

2

此代碼將打開或創建一個文件並將新文本追加到新行中。你

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

還可以創建FileWriter與參數「追加=真」,然後結果將只被附加到一個新的生產線。

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