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

在学习到数据流时,使用DataOutputStream向txt文件中写入几行数据,随手查看发现txt文件中显示的并不是我写入的数据,而是类似乱码的东西。
在这里插入图片描述
出现上面的情况是因为DataOutputStream向文件写入时会做特殊的标记,只有DataInputStream才能进行读取。文件中显示的"NUL" "STX"可以在ASCII对照表中找到对应的释义。
DataOutputStream写入txt文件数据出现乱码的问题_第1张图片
另外要注意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(),结果本来一行汉字被读取出来变成了一串数字。
DataOutputStream写入txt文件数据出现乱码的问题_第2张图片

你可能感兴趣的:(java学习)