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

  • Post author:
  • Post category:其他


在学习到数据流时,使用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(),结果本来一行汉字被读取出来变成了一串数字。

在这里插入图片描述



版权声明:本文为knock_me原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。