在学习到数据流时,使用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 版权协议,转载请附上原文出处链接和本声明。