【问题标题】:FileWritter write integers as illegal charactersFileWriter 将整数写入非法字符
【发布时间】:2020-08-28 17:16:32
【问题描述】:

我目前正在编写一个编写另一个算法的算法。 为此,我正在使用 FileWritter 类,并且在我尝试在文件中写入整数之前它工作得很好。

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

当我在做fileWriter.write("1") 时,这项工作很好。

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

【问题讨论】:

    标签: java filewriter illegal-characters


    【解决方案1】:

    基本上Writer.write(int) 不会做你期望的事情。 documentation 说:

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

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

    它不是世界上最棒的 AP​​I(最好接受 char 作为单个字符)但它按照设计运行。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-06
        • 2012-01-04
        • 2015-06-12
        • 2015-06-09
        • 2016-02-18
        • 2015-05-25
        • 2014-03-13
        • 1970-01-01
        相关资源
        最近更新 更多