BufferedWriter表现得很奇怪

时间:2012-08-09 02:08:09

标签: java bufferedwriter

我正在尝试使用工作高分机制制作游戏,我正在使用java.io.BufferedWriter写入高分文件。我在高分上没有加密,我使用Slick2D和LWJGL进行渲染和用户输入。程序执行此代码:

FileWriter fstream = new FileWriter("res/gabjaphou.txt");

BufferedWriter writer = new BufferedWriter(fstream);

writer.write(score); // score is an int value

writer.close(); // gotta save m'resources! lol

我打开由此生成的文本文件,所有读取的内容都是问号。我不知道为什么会这样,我使用了我正在制作的另一个项目的其他代码,我没有问题......有谁知道为什么?这真烦人! :C

3 个答案:

答案 0 :(得分:4)

BufferedWriter.write(int)用于编写单个字符,而不是整数。

  

public void write(int c)
  throws IOException

     

写一个字符。

     

覆盖:写在类Writer中   参数: c - int指定要写入的字符
  抛出: IOException - 如果发生I / O错误

尝试

writer.write(String.valueOf(score));  

答案 1 :(得分:3)

请使用writer.write(String.valueOf(score));,否则writes score as a character。 请参阅文档:

  

写一个字符。要写入的字符包含在给定整数值的16个低位中; 16位高位被忽略。

您想要使用的是Writer.write(String);使用scoreStringString.valueOf转换为Integer.toString

writer.write(String.valueOf(score));

答案 2 :(得分:0)

BufferedWriter正在尝试将一系列字节写入文件,而不是数字。一个数字仍然是一个角色。

请考虑使用FileWriter,并使用以下内容: fileWriter.write(Integer.toString(score)) Write在这里使用一个字符串,但输出应该是相同的。