2015-05-17 11 views
0

我正在製作一個非常簡單的單詞鼴鼠遊戲,但是這個高分寫作問題正在讓我失望。所以下面的方法會告訴你當遊戲結束後你按下重新啓動時會發生什麼。通過幾次啓動將多個分數寫入數據文件

private static void HighScoreInput() throws IOException, ClassNotFoundException 
{ 

    FileOutputStream fos = new FileOutputStream(dataFile); 
    ObjectOutputStream saveItem = new ObjectOutputStream(fos); 
    player[intplayernum] = new HighScore(userName, timePlayed, totalwords, timecount.getText()); 

    saveItem.writeObject(player[intplayernum].toString()); 
    System.out.println(player[intplayernum].toString()); 


    System.out.println("Player score written to file."); 
    saveItem.close(); 
    GameFrame.setVisible(false); 
    GameFrame.dispose(); 
    askNameApp(); 
    intplayernum++; 
} 

但每一次發生這種情況時,或者當用戶重新啓動,它應該加上以前的數據,所以我們有多個得分高分文件。相反,這隻會保留文件上的最後一個輸入播放器對象。我需要知道如何繼續添加,而不是替換名稱。

+0

保存分數時,您將創建一個新文件並將該分數寫入該文件。由於您不會寫任何其他內容,這就是文件中的全部內容。如果要保留以前的內容,請使用FileWriter和append選項,或者繼續使用FileOutputStream,但在寫入最新分數之前先寫入文件的以前內容。 –

+0

謝謝克里斯。我有點不滿意你的意思,但你能告訴我如何做到這一點的代碼 – user3444412

+0

看到我的代碼,你需要修改的答案 –

回答

0

其實,現在我看文檔,請嘗試這一行:

FileOutputStream fos = new FileOutputStream(dataFile, true); 

,而不是這一行:

FileOutputStream fos = new FileOutputStream(dataFile); 

第二個值,真實,告訴系統要追加,而不是更換。

+0

克里斯,這是非常好的。它現在完全有效。但還有一點問題。它不是在下一行添加下一個玩家的名字,而是在旁邊添加。這是一個問題,因爲當我想直接從實際文件而不是數組讀取文件時,我將不得不執行一些複雜的代碼才能使其工作。任何方式來解決這個問題? – user3444412

+0

給你一個它的外觀,看看這個... ¬í¬ít姓名:Jarraf日期:2015/05/17_ 17:53:57總字數:0使用時間:3.0秒M名稱:金錢日期:2015/05/17_ 17:54:10總字數:0使用時間:2.0秒 所有這些^只是一行,但它的信息爲2個玩家 – user3444412

相關問題