2015-08-29 84 views
0

我正在爲一款遊戲創建一個保存遊戲文件,但我的PrintWriter只是用沒有任何內容代替我需要的數字覆蓋文件。無法讓PrintWriter正常工作

下面的代碼:

public void fileWriter() throws FileNotFoundException { 
    PrintWriter print = new PrintWriter(new File("C:\\Users\\john\\Desktop\\stats.txt")); 
    print.print(String.valueOf(this.swordNumber) + " "); 
    print.print(String.valueOf(this.shieldNumber) + " "); 
    print.print(String.valueOf(this.monstersDefeated) + " "); 
    print.print(String.valueOf(this.damageDealt)); 
} 

我用盡了一切辦法讓這些變量包括印刷,但String.valueOf其無法正常工作。

+1

你是什麼意思,它不工作?如果文件沒有任何輸出,請嘗試在打印作業器上關閉。 – KDM

回答

5

您應該正確使用Java的資源try-catch塊。這將自動關閉,即使拋出了任何異常流:我建議使用Integer.toString()反而使類型轉換更加明顯

public void fileWriter() throws FileNotFoundException { 
    File file = new File("C:\\Users\\john\\Desktop\\stats.txt"); 
    try (PrintWriter print = new PrintWriter(file)) { 
     print.print(Integer.toString(swordNumber) + " "); 
     print.print(Integer.toString(shieldNumber) + " "); 
     print.print(Integer.toString(monstersDefeated) + " "); 
     print.print(Integer.toString(damageDealt)); 
    } 
} 

而且而非String.valueOf()

+0

最佳答案。我也喜歡使用'Integer.toString()'的注意事項。 – Nayuki

2

您在退出前沒有關閉流, 未正確刷新和關閉。 加入這一行,當你寫完:

print.close(); 

使用它們後,應該始終關閉文件句柄。

更妙的是,包在一個try-與資源整件事:

try (PrintWriter writer = new PrintWriter(new File("C:\\Users\\john\\Desktop\\stats.txt"))) { 
    // ... 
} 

這樣,你就不必擔心關閉它, ,因此你不能「忘記」了。