You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中FileOutputStream写入int值到文件显示哈希符号问题咨询

问题原因解析

这是个很典型的字节写入与字符编码混淆的问题,我来给你拆解清楚:

为什么第一个代码会显示哈希符号?

看你第一段代码里的fo.write(a),这里的a是值为2的int变量,但FileOutputStream的write(int b)方法并不是把整个int值写入文件——它只会取这个int的低8位字节(也就是0-255范围的数值),把它当作ASCII编码对应的字符写入。

而ASCII码值为2的字符是STX(文本开始符),这是一个不可打印的控制字符,普通文本编辑器无法显示这类字符,就会用哈希符号(或者其他占位符)来代替它,这就是你看到的现象。

为什么第二个代码能正常显示?

第二段代码里,你把字符串"2"转成字节数组b,这里的getBytes()方法默认会把字符'2'转换成它对应的ASCII编码值——也就是50,然后写入文件。ASCII码50对应的就是可打印的数字字符'2',所以文本编辑器能正常显示出来。

怎么解决这个问题?

如果你的需求是把数字2以可打印的字符形式写入文件,有几种简单的方式:

  • 直接写入字符的ASCII码:fo.write('2')(单引号的'2'是char类型,它的ASCII值就是50)
  • 把int转成字符串后再写入,就像你第二段代码那样
  • 使用更适合处理文本的流,比如PrintStream,它可以直接处理基本类型:
    File f = new File("even.txt");
    PrintStream ps = new PrintStream(f);
    ps.print(2); // 直接写入数字2的字符形式
    ps.close();
    

内容的提问来源于stack exchange,提问作者Dev Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:47:43