BufferedWriter is acting strange

不羁岁月 提交于 2019-12-01 09:58:59

问题


I am trying to make a game with a working highscore mechanism and I am using java.io.BufferedWriter to write to a highscore file. I don't have an encryption on the highscore and I am using Slick2D and LWJGL for rendering and user input. The program executes this code:

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

I open the text file generated by this and all it reads is a question mark. I don't know why this happens, and I used other code from another project I was making and I had no problem with that... Does anyone know why? This is really annoying! :C


回答1:


BufferedWriter.write(int) is meant to write a single charecter, not a integer.

public void write(int c)
throws IOException

Writes a single character.

Overrides: write in class Writer
Parameters: c - int specifying a character to be written
Throws: IOException - If an I/O error occurs

Try

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



回答2:


Please use writer.write(String.valueOf(score)); otherwise it writes score as a character. See the documentation:

Writes a single character. The character to be written is contained in the 16 low-order bits of the given integer value; the 16 high-order bits are ignored.

What you want to use is Writer.write(String); convert score to a String using String.valueOf or Integer.toString.

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



回答3:


BufferedWriter is attempting to write a series of bytes to the file, not numbers. A number is still a character.

Consider using FileWriter instead, and something as simple as: fileWriter.write(Integer.toString(score)) Write takes a string here, but the output should be the same.



来源:https://stackoverflow.com/questions/11875815/bufferedwriter-is-acting-strange

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!