为什么DataInputStream和DataOutputStream读写文件时乱码?最好用文字说明,谢谢啊
展开全部
DataInputStream和DataOutputStream提供了对java相应数据类型读写的流操作方法,但是由于各个数据类型的长度都不太一样,所以读写的时候一定要一一对应。
例如一个int类型占4个字节,一个double类型占8个字节...而DataInputStream和DataOutputStream是字节流,一个字节一个字节写入的,如果你开始存入一个4字节的int类型,然后存入8字节的double类型,读取的时候先读取8字节的double类型就会讲int类型的4个字节,和double数据的前4个字节一起读出来,最终造成了乱码。所以写入的数据类型顺序一定要对应读取的数据类型顺序。
还有一种可能就是你编码格式的不统一造成的,jvm默认的编码格式是utf-16,而如果你在输入输出流中使用了别的编码格式,如utf-8,或者gbk等等都会造成乱码。
例如一个int类型占4个字节,一个double类型占8个字节...而DataInputStream和DataOutputStream是字节流,一个字节一个字节写入的,如果你开始存入一个4字节的int类型,然后存入8字节的double类型,读取的时候先读取8字节的double类型就会讲int类型的4个字节,和double数据的前4个字节一起读出来,最终造成了乱码。所以写入的数据类型顺序一定要对应读取的数据类型顺序。
还有一种可能就是你编码格式的不统一造成的,jvm默认的编码格式是utf-16,而如果你在输入输出流中使用了别的编码格式,如utf-8,或者gbk等等都会造成乱码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询