FileWriter 将整数写为非法字符

FileWritter write integers as illegal characters

我目前正在编写一个算法,而这个算法正在编写另一个算法。 为此,我正在使用 FileWritter class,在我尝试在文件中写入整数之前,它工作正常。

fileWriter.write(1); 打印 ``(编辑:您看不到此处的字符)intelliJ 解释为:Illegal Character U+0001(每个数字都有不同的非法字符名称)

当我做 fileWriter.write("1") 这个工作很好。

问题是出自 Intellij 还是我必须将每个整数都转换为字符串?

基本上 Writer.write(int) 并没有达到您的预期。 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.

所以你写的是 U+0001,正如 IntelliJ 所说的那样。

它不是世界上最伟大的 API(最好接受 char 作为单个字符)但它 的设计.

基本上,是的,您需要将所有内容都转换为文本。

继承自OutputStreamWriter.write(int)FileWriter.write(int)方法,将单个字符写入文件。输入 int 是字符的 ASCII 或 Unicode 表示。例如,写 fileWriter.write(65) 写字母 A,因为 A 的 ASCII 值是 65。这也可以写成 fileWriter.write('A'),因为字符 A 在内存中表示为数字 65。如果要将整数写入文件,则需要调用 fileWriter.write(Integer.toString(i)),其中 i 是您要写入的值。或者,如果i是一位正数,你可以写成fileWriter.write('0' + i),这样的数字加上'0'就可以把它转换成它对应的字符。