2014-01-15 73 views
3

所以我試圖將用戶列表存儲到外部文本文件中,並且如果他們沒有帳戶,那麼他們需要註冊,並且他們的賬戶被添加到文本文件中。每次程序運行時創建一個新的但不同的對象

但是,每次創建新用戶時,它都會覆蓋文本文件中的最後一個用戶。

任何人都可以看到我的代碼創建一個新的用戶有什麼問題,如果theres明顯的東西會解決它?

編輯:

我認爲,文本文件被重新每次我運行程序時,我怎麼能只是添加到它,而不是使每一次一個新的?

System.out.println("Enter your full name below (e.g. John M. Smith): "); 
     String name = scanner.nextLine(); 
     System.out.println("Create a username: "); 
     String userName = scanner.nextLine(); 
     System.out.println("Enter your starting deposit amount: "); 
     double balance = scanner.nextInt(); 

     System.out.print(dash); 
     System.out.print("Generating your information...\n"); 
     System.out.print(dash); 

     int pin = bank.PIN(); 
     String accountNum = bank.accountNum(); 

     User user = new User(name, userName, pin, accountNum, balance); 

     // new user gets added to the array list 
     Bank.users.add(user); 

     System.out.println(user); 

    } 

    try { 

     File file = new File("users.text"); 

     if (!file.exists()) { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 

     bw.append(String.valueOf(Bank.users)); 
     bw.close(); 

     System.out.print("DONE"); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

回答

3

你的問題是,當你創建你的FileWriter實例時,你不會要求它追加。它默認爲覆蓋。

試試這個(多線上下文):

if (!file.exists()) { 
     file.createNewFile(); 
    } 

    // Line being changed 
    FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 


    BufferedWriter bw = new BufferedWriter(fw); 

    bw.append(String.valueOf(Bank.users)); 
    bw.close(); 
+0

謝謝!你對我的幫助很大! – 23k

1

像這樣的東西應該工作:

String filename= "users.test"; 
FileWriter fw = new FileWriter(filename,true); //the true will append the new data 
fw.write(String.valueOf(Bank.users));//appends the string to the file 
fw.close(); 

試試這個。在課程中添加例外和東西。

1

這是東陽的文件開放獲取截斷。你有追加模式下打開它,用:

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 

第二個參數將告訴FileWriter這樣做。參考文獻here

1

替換此:

FileWriter fw = new FileWriter(file.getAbsoluteFile()); //overwrite 

本:

FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); //append 
相關問題