2015-12-29 164 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