2

我正在尝试使用有效的高分机制制作游戏,并且正在使用 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

4

3 回答 3

5

BufferedWriter.write(int)旨在写入单个字符,而不是整数。

public void write(int c)
throws IOException

写入单个字符。

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

尝试

writer.write(String.valueOf(score));  
于 2012-08-09T02:12:11.740 回答
4

请使用writer.write(String.valueOf(score));,否则它会写成score一个字符。请参阅文档:

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

您要使用的是Writer.write(String);转换scoreStringusingString.valueOfInteger.toString.

writer.write(String.valueOf(score));
于 2012-08-09T02:11:58.760 回答
0

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

考虑FileWriter改用,就像这样简单: fileWriter.write(Integer.toString(score)) Write 在这里接受一个字符串,但输出应该是一样的。

于 2012-08-09T02:12:22.000 回答