java io 写数字_关于JAVA IO流写文件数字乱码的问题

在完成JavaWeb作业时遇到一题是需要持久化保存登录人数的,题主当时就在Listener里写了输入输出两个函数,但是检查一看发现写入的数字变成了乱码(其实不能说是乱码)。

当时很疑惑就改用了如下代码:

写代码:

File file = new File(PATH);

if(file.exists()==false)

{

file.createNewFile();

}

//设置编码

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file,false),"UTF-8");

BufferedWriter writer = new BufferedWriter(out);

writer.write(5);

writer.close();

读代码:

File file = new File(PATH);

if(file.exists()==false)

{

file.createNewFile();

}

//设置编码

InputStreamReader in = new InputStreamReader(new FileInputStream(file), "UTF-8");

BufferedReader reader = new BufferedReader(in);

String msg = reader.readLine();

if(msg!=null)

{

if((msg.equals("")==false)||isNumeric(msg)==true)

{

count = Integer.valueOf(msg);

}

}

reader.close();

然并卵,还是不显示数字。

好吧,最后终于发现真相了:

其实outsteam.write()里面是一个单独的数字时,是把数字转换为ASCII码传进去的,所以也并不是什么乱码。

write()API如下:

Writes a single character.

Parameters:

c int specifying a character to be written//关键

Throws:

IOException - If an I/O error occurs

解决方法也很简单只需要在数字后面加上 +“” 就好,write就转换为写String的方法了

Writes a string.

Parameters:

str String to be written

Throws:

IOException - If an I/O error occurs 都大三了还踩这种坑也是惭愧啊

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值