DataOutputStream写入txt文件数据出现乱码的问题

本文探讨了使用DataOutputStream向文件写入数据时遇到的问题,解释了为何直接使用普通流读取会出现乱码,以及如何正确地使用DataInputStream进行读取。文章强调了读写方法的对应性和DataInputStream的特殊用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习到数据流时,使用DataOutputStream向txt文件中写入几行数据,随手查看发现txt文件中显示的并不是我写入的数据,而是类似乱码的东西。
在这里插入图片描述
出现上面的情况是因为DataOutputStream向文件写入时会做特殊的标记,只有DataInputStream才能进行读取。文件中显示的"NUL" "STX"可以在ASCII对照表中找到对应的释义。
在这里插入图片描述
另外要注意DataInputStream只能用来读取DataOutputStream写入的数据,否则会报告EOFException错误。

除此之外,在读取时用到的方法要与写入时的方法对应,否则就会出现下面这种情况:

//写入
try (
		FileOutputStream fos = new FileOutputStream(file);
		DataOutputStream dos = new DataOutputStream(fos);
	) {
		dos.writeInt(2);
		dos.writeInt(31231);
		dos.writeUTF("今天又是充满希望的一天!");
		}
//读取
try (
		FileInputStream fis = new FileInputStream(file);
		DataInputStream dis = new DataInputStream(fis);
	) {
		System.out.println(dis.readInt());
		System.out.println(dis.readInt());
		System.out.println(dis.readInt());
    	} 

读取结果如下,前两行数据写入读取的方法相匹配,并没有出错。第三行数据写入用的方法是writeUTF(), 读取使用的方法是readInt(),结果本来一行汉字被读取出来变成了一串数字。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值