2014-04-09 75 views
0

我第一次寫入文件,但文件上的文本完全錯誤。而不是數字(它應該打印),它打印無法識別的字符。我似乎無法理解爲什麼會發生這種情況? (在我的代碼中,print語句位於for循環中,但這是循環中的「shell」)寫入文件

對此有合理的解釋嗎?

try { 
FileWriter outFile = new FileWriter("newFile.txt", true); 
outFile.write(number); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
+0

字符編碼是未指定的。您應該指定字符編碼。 –

+0

@BoristheSpider:你不能用'FileWriter'來做 - 只有一個原因可以避免它:( –

+1

掃描器不會在任何地方寫任何東西,並且代碼中沒有掃描器。不要引入不相關的東西。 – EJP

回答

4

你打電話Writer.write(int)

寫入單個字符。要寫入的字符包含在給定整數值的16個低位中; 16位高位被忽略。

我的猜測是不是你想做什麼。如果你想要寫一個數字的文本表示,你需要做的是明確的:

outFile.write(String.valueOf(number)); 

(個人我推薦使用OutputStreamWriter一個FIleOutputStream纏,因爲這時可以 - 也應該 - 指定編碼FileWriter總是使用平臺默認編碼。)

+0

謝謝,那工作:)!如果這可能是一個更好的解決方案,我也將閱讀OutputStreamWriter。 – user2795095