字符流去处理这个文件,很有可能会导致问题。
这种文件,只应该用字节流去处理。只有文本文件,才可以用字符流处理。
原因在于:
字符流拷贝文件,从编解码的角度来看,其本质就是如下图的动作:
在字节转字符的过程中,如果遇到编码表中存在的字符,将能够正确解码。
但是当遇到编码表中不存在的字符时,部分解码器会找它认为相近的当前编码表中能识别的字符去替代。
这样就导致解码后,字符对应的字节码已经发生了变化。
当你再次按照编码表编码成字节时,部分编码后的字节将与之前的字节产生差异。
也就是说,数据会出错。
总结一句话,就是:不能,因为在编码过程中,会引入错误。
这个具体,你可以看一下毕向东老师的JAVA基础视频:第21天 的 第06、07、08个视频。(记不清哪个是了,不过这三个里面,肯定有一个讲过,反正也不长,都看一下吧)
|