2015-12-29 134 views
1

我嘗試將一些整數寫入文本文件,並且每行只輸入一個值,所以我使用了BufferedWriter。使用BufferedWriter將文件寫入文本(寫入一些奇怪的內容)Java

try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
          new FileOutputStream("filename.txt"), "utf-8"))) { 
    writer.write(board.Player1.money);    
    writer.newLine(); 
    //Continues to do this for 4 players. 
    writer.newLine(); 
    writer.write(board.Player1.position); 
    writer.newLine(); 
    //Continues to do this for 4 players. 
} 

我期望看到的是我的文本文件中的整數。而像board.Player1.money這樣的值是正確的,因爲它們正在處理代碼的其他部分。所以我期望看到像300這樣的值,但我在文本文件中看到以下幾行。

Ǵ 
ಀ 
ಀ 
ಀ 

這是爲什麼?

+0

此外,您還可以使用StandardCharsets定義「Charset」的常量包括「UTF_8」。 'StandardCharsets.UTF_8' –

回答

1

BufferedWriterwrite(...)方法被重載。

例如:有方法void write(String arg)它將給定的字符串寫入文件,並有void write(int arg)它將給定的整數轉換爲字符,然後將字符寫入文件。

解決您的propblem你就必須改變

writer.write(board.Player1.position); 

writer.write(Integer.toString(board.Player1.position)); 
+0

這個解決方案沒問題,但我有一個問題。當我將它保存爲一個字符串時,它仍然會向文件寫入一個整數值(現實生活中)。因此,當我嘗試讀取它時,我可以直接將它放入整數數組或我應在讀取文件後使用Integer.parseInt? – Juwan

+0

當你讀回來時,你必須使用一些'readLine()'方法。得到的字符串必須使用'Integer.parseInt(...)'來解析爲Integer! – ParkerHalo

1

用整數寫(int c)期待一個字符。 考慮使用寫(String s,int off,int len)或某些包裝(如PrintWriter)

+0

這個解決方案似乎可以,如果有人有同樣的問題,他們可以使用它,但我只想在每行保存一個int值。爲了我的目的,我認爲寫入Integer.toString更好,但這個答案也是有效的。 – Juwan

2

另一種方式來做到這一點是:

writer.write(board.Player1.money+""); 
+0

我正在與你同時寫(swh)..但也在這種情況下,我們應該使用Integer.parseInt.I測試這個,它的行爲正確的方式 – Juwan