2014-04-09 162 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